问题描述:制作上传头像缩略图,希望图片能够等比例剪切,类似豆瓣的头像上传功能
搜索答案:本来以为这样的问题应该很好搜答案,baidu google搜了一遍发现都是直接制作缩略的,没有剪切的功能。因为一直做web,很少用到gdi+的类库,只是了解点而已,按照制作缩略图的方法简单改一下就解决了。
解决代码:
System.Drawing.Image newImage=System.Drawing.Image.FromFile(Server.MapPath(”upimages/1.gif”));
Bitmap b=new Bitmap(50,50);
Graphics g=Graphics.FromImage(b);
int photoWidth=newImage.Width;
int photoHeight=newImage.Height;
int x=50,y=50;
int x1=50;
if ((photoWidth-photoHeight)>0)
{
y=0;
x=(photoWidth-photoHeight)/2;
x1=photoHeight;
}
else
{
x=0;
y=(photoHeight-photoWidth)/2;
x1=photoWidth;
}
GraphicsUnit units = GraphicsUnit.Pixel;
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear;
g.DrawImage(newImage, new Rectangle(0, 0, b.Width, b.Height),x, y, x1,x1, units);
b.Save(Server.MapPath(”11.jpg”));
Bitmap b=new Bitmap(50,50);
Graphics g=Graphics.FromImage(b);
int photoWidth=newImage.Width;
int photoHeight=newImage.Height;
int x=50,y=50;
int x1=50;
if ((photoWidth-photoHeight)>0)
{
y=0;
x=(photoWidth-photoHeight)/2;
x1=photoHeight;
}
else
{
x=0;
y=(photoHeight-photoWidth)/2;
x1=photoWidth;
}
GraphicsUnit units = GraphicsUnit.Pixel;
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear;
g.DrawImage(newImage, new Rectangle(0, 0, b.Width, b.Height),x, y, x1,x1, units);
b.Save(Server.MapPath(”11.jpg”));
代码很简单 就不用解释了。
备注: 为什么要把这么简单的方法写个blog呢,还是由于豆瓣的缘故,在豆瓣出现之前做头像的很少象这样直接把客户上传的图片切割的,可能是为了用户图片的完整性吧,但是豆瓣大胆的用这种简单的方法,达到了更好的效果,图片更容易被人看清楚,而且也增加了用户头像的个性。
有时候技术其实不是最主要的,一个很好的思路就能带动网站的发展。
下篇研究mop的头像上传功能,也是一个很简单的功能,但是达到了比豆瓣更加直观的效果。敬请期待
posted on 2007-11-02 09:33 jueban's space 阅读(819) 评论(0) 编辑 收藏 举报