C# 使用GDI+;调整大小时限制文件大小;

C# 使用GDI+;调整大小时限制文件大小;,c#,image,graphics,resize,gdi,C#,Image,Graphics,Resize,Gdi,我正在调整上传图像的大小,如下所示: var bmPhoto = new Bitmap(width, height, PixelFormat.Format16bppRgb555); using (var grPhoto = Graphics.FromImage(bmPhoto)) { grPhoto.SmoothingMode = SmoothingMode.HighSpeed; grPhoto.CompositingQuality = CompositingQuality.HighS

我正在调整上传图像的大小,如下所示:

var bmPhoto = new Bitmap(width, height, PixelFormat.Format16bppRgb555);

using (var grPhoto = Graphics.FromImage(bmPhoto))
{
  grPhoto.SmoothingMode = SmoothingMode.HighSpeed;
  grPhoto.CompositingQuality = CompositingQuality.HighSpeed;
  grPhoto.InterpolationMode = InterpolationMode.Low;
  grPhoto.DrawImage(sourceImage, new Rectangle(destX, destY, destWidth, destHeight),
                        new Rectangle(0, 0, sourceWidth, sourceHeight), GraphicsUnit.Pixel);
}

如何限制生成的文件大小,使其不大于(比如)3KB?我正在上传一个1024x768 JPG,它是768KB。使用上述代码将大小调整为100x100时,我无法获得小于12KB的大小。

您可以尝试使用该属性,但有一种方法可以知道生成的图像大小。您还可以尝试将文件另存为png,这对于非照片图像(图形)效果更好。

调整大小的代码不是您需要查看的。执行位图时,请查看jpeg压缩级别。Save()

3kb完全适用于100x100图像。如果您得到的是12kb,则最有可能使用最高质量的jpeg压缩保存jpeg


是一篇MSDN文章,介绍如何在保存位图时设置压缩级别

一个奇怪的要求,您是否尝试过使用另一个工具调整它的大小,以查看在100x100时是否可以实现3KB,或者您是否只需要将其缩小,例如64x64?我认为我无法在不降低到8位的情况下再降低质量。不幸的是,这些都是照片。@MarkRichman,如果你不能进一步降低质量,那么这个问题就没有意义了。在这种质量级别和大小下,12KB是最好的。