GDI+中对图片的裁剪
1
void CutImage(HttpPostedFile post,string ppuid,out string imagename) 2

{ 3
System.Drawing.Image SourceImg = System.Drawing.Image.FromStream(post.InputStream); 4
if (SourceImg.Height > ConfigHelper.UserFaceMaxHeight) 5

{ 6
this._lbl_upload_msg.Text = "最大高度不得大于 " + ConfigHelper.UserFaceMaxHeight; 7
return; 8
} 9
if (SourceImg.Width > ConfigHelper.UserFaceMaxWidth) 10

{ 11
this._lbl_upload_msg.Text = "最大宽度不得大于 " + ConfigHelper.UserFaceMaxWidth; 12
return; 13
} 14
ImageFormat format = getImageformat(System.IO.Path.GetExtension(post.FileName)); 15
string filename = ppuid+"."+format.ToString(); 16
imagename = filename; 17

18
if (!UserFaceDir.EndsWith("\\")) 19
UserFaceDir = UserFaceDir+"\\"; 20
filename = UserFaceDir + filename; 21
int SourceImgWidth = SourceImg.Width; 22
int SourceImgHeight = SourceImg.Height; 23
if ((SourceImgWidth != ConfigHelper.UserFaceWidth) && (SourceImgHeight != ConfigHelper.UserFaceHeight)) 24

{ 25
//如果宽高比例为1:1,则直接构成缩略图 26
if (((Double)SourceImgWidth / SourceImgHeight) == 1) 27

{ 28
System.Drawing.Image thumbimg = SourceImg.GetThumbnailImage(ConfigHelper.UserFaceWidth, ConfigHelper.UserFaceHeight, null, IntPtr.Zero); 29
thumbimg.Save(filename, format); 30
thumbimg.Dispose(); 31
SourceImg.Dispose(); 32
return; 33
} 34
Bitmap bit = new Bitmap(SourceImg); 35
Rectangle rec = new Rectangle(); //构造一个Rectangle类,一个矩形 36
rec.Width = ConfigHelper.UserFaceWidth; 37
rec.Height = ConfigHelper.UserFaceHeight; 38
if (SourceImgWidth > rec.Width) 39
rec.X = (SourceImgWidth - rec.Width) / 2; 40
else 41

{ 42
rec.X = 0; 43
rec.Width = SourceImg.Width; 44
} 45
if (SourceImgHeight > rec.Height) 46
rec.Y = (SourceImgHeight - rec.Height) / 2; 47
else 48

{ 49
rec.Y = 0; 50
rec.Height = SourceImg.Height; 51
} 52

53
try 54

{ 55
//这里就是把从上传过程中构造的bitmap克隆一份,并按定义好的矩形裁剪 56
bit.Clone(rec, PixelFormat.DontCare).Save(filename, format); 57
} 58
catch (Exception ex) 59

{ 60
this._lbl_upload_msg.Text = ex.Message; 61
return; 62
} 63
finally 64

{ 65
bit.Dispose(); 66
SourceImg.Dispose(); 67
} 68
} 69
} 70


浙公网安备 33010602011771号