功能函数,从项目中剥离而来函数
/// <summary> /// 图片压缩功能 /// </summary> /// <param name="sourceImage">原图</param> /// <param name="targetSize">目标压缩尺寸</param> /// <returns></returns> public static Image imgCompress(Image sourceImage, Size targetSize) ///图片压缩功能 { int targetWidth = targetSize.Width, targetHeight = targetSize.Height; //图片转换的目标的尺寸;因为图片原有的比例问题,目标尺寸不等于最终的尺寸。 int width;//图片最终的宽 int height;//图片最终的高 try { System.Drawing.Imaging.ImageFormat format = sourceImage.RawFormat; Bitmap targetPicture = new Bitmap(targetWidth, targetHeight); Graphics g = Graphics.FromImage(targetPicture); g.Clear(Color.White); //计算缩放图片的大小 if (sourceImage.Width > targetWidth && sourceImage.Height <= targetHeight) { width = targetWidth; height = (width * sourceImage.Height) / sourceImage.Width; } else if (sourceImage.Width <= targetWidth && sourceImage.Height > targetHeight) { height = targetHeight; width = (height * sourceImage.Width) / sourceImage.Height; } else if (sourceImage.Width <= targetWidth && sourceImage.Height <= targetHeight) { width = sourceImage.Width; height = sourceImage.Height; } else { width = targetWidth; height = (width * sourceImage.Height) / sourceImage.Width; if (height > targetHeight) { height = targetHeight; width = (height * sourceImage.Width) / sourceImage.Height; } } g.DrawImage(sourceImage, (targetWidth - width) / 2, (targetHeight - height) / 2, width, height); sourceImage.Dispose(); return targetPicture; } catch (Exception ex) { } return null; }
调用示例spa
HttpPostedFile pic_upload = Request.Files["file"]; System.Drawing.Image bigImage = clsPublic.imgCompress(System.Drawing.Image.FromStream(pic_upload.InputStream), new Size(400, 400));//缩后的大图 System.Drawing.Image minImage =clsPublic.imgCompress(System.Drawing.Image.FromStream(pic_upload.InputStream), new Size(50, 50));//缩后的小图