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

时间:2009-09-29 15:36:27

标签: 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.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。

2 个答案:

答案 0 :(得分:1)

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

3kb完全可以使用100x100图像。如果你得到12kb,你最有可能用最高质量的jpeg压缩来保存jpeg。

Here是一篇关于如何在保存位图时设置压缩级别的MSDN文章。

答案 1 :(得分:0)

您可以尝试使用quality属性,但有一种方法可以了解最终的图像大小。您还可以尝试将文件另存为png,这对非照片图像(图形)更有效