【发布时间】:2018-01-29 01:37:03
【问题描述】:
只是徘徊,如何减少图像的文件大小但保持 C# .net 中的质量?
我有以下代码用于保存从 ipad 拍摄的图像:
Bitmap srcBmp = new Bitmap(file.InputStream);
int w = srcBmp.Width;
int h = srcBmp.Height;
if (srcBmp.Width > 2732 && srcBmp.Height > 2048)
{
w = 2732;
h = 2048;
}
SizeF newSize = new SizeF(w, h);
Bitmap target = new Bitmap(w, h);
var destRect = new Rectangle(0, 0, w, h);
HttpContext.Response.Clear();
HttpContext.Response.ContentType = "image/jpeg";
using (var graphics = Graphics.FromImage(target))
{
graphics.CompositingMode = CompositingMode.SourceCopy;
graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
using (var wrapMode = new ImageAttributes())
{
wrapMode.SetWrapMode(WrapMode.TileFlipXY);
graphics.DrawImage(srcBmp, destRect, 0, 0, w, h, GraphicsUnit.Pixel, wrapMode);
using (FileStream fileStream = new FileStream(fname, FileMode.Create))
{
target.Save(fileStream, System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
}
保存的图像总是超过 14MB。无论如何我可以保持图像质量并将文件大小减小到 2MB 以下?
【问题讨论】: