搜索答案:本来以为这样的问题应该很好搜答案,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的头像上传功能,也是一个很简单的功能,但是达到了比豆瓣更加直观的效果。敬请期待