图片的按比例缩小.
来源:互联网 发布:淘宝关注人数最多的店 编辑:程序博客网 时间:2024/05/01 12:40
- public static byte[] ResizeImageFile(byte[] imageFile, int targetSizeW, int targetSizeH)
- {
- System.Drawing.Image original = System.Drawing.Image.FromStream(new MemoryStream(imageFile));
- int targetH, targetW;
- targetW = targetSizeW;
- targetH = (int)(original.Height * ((float)targetSizeW / (float)original.Width));
- if (targetH > targetSizeH)
- {
- targetH = targetSizeH;
- targetW = (int)(original.Width * ((float)targetSizeH / (float)original.Height));
- }
- if (targetSizeW < (int)original.Width || targetSizeH < (int)original.Height)
- {
- System.Drawing.Image imgPhoto = System.Drawing.Image.FromStream(new MemoryStream(imageFile));
-
- Bitmap bmPhoto = new Bitmap(targetW, targetH, PixelFormat.Format24bppRgb);
- bmPhoto.SetResolution(72, 72);
- Graphics grPhoto = Graphics.FromImage(bmPhoto);
- grPhoto.SmoothingMode = SmoothingMode.AntiAlias;
- grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic;
- grPhoto.PixelOffsetMode = PixelOffsetMode.HighQuality;
- grPhoto.DrawImage(imgPhoto, new Rectangle(0, 0, targetW, targetH), 0, 0, original.Width, original.Height, GraphicsUnit.Pixel);
-
- MemoryStream mm = new MemoryStream();
- bmPhoto.Save(mm, System.Drawing.Imaging.ImageFormat.Jpeg);
- original.Dispose();
- imgPhoto.Dispose();
- bmPhoto.Dispose();
- grPhoto.Dispose();
- return mm.GetBuffer();
- }
- else
- {
- return imageFile;
- }
- }