1

如何将图像文件大小更改为所需大小?就像一张 800KB 的图片变成 100KB 的?

我有一个 3MB 尺寸的图像:(2560 X 1600),300 dpi 和 24 位深度。我只是在 Bitmap 中读取它,将其分辨率更改为 150 dpi 并用新名称保存,并认为可能会将其减少到几乎一半原始文件,但新文件保持相同大小,并且 dpi SetResolution 不会产生任何效果。

Bitmap image = Bitmap.FromFile("myPic.jpeg");
image.SetResolution(96, 96);
image.Save("newPic.jpeg");

然后我使用了这段代码

// Reads Image
Bitmap image = Bitmap.FromFile("myPic.jpeg");

// Sets canvas with new dpi but same dimensions and color depth
Bitmap canvas = new Bitmap(image.Width, image.Height, PixelFormat.Format24bppRgb);
canvas.SetResolution(150, 150);

// Draw image on canvas through graphics
Graphics graphics = Graphics.FromImage(canvas);
graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graphics.DrawImage(image, new Rectangle(0, 0, image.Width, image.Height),
            new Rectangle(0, 0, image.Width, image.Height), GraphicsUnit.Pixel);

// Saved Image
bitmap.Save("newPic.jpeg");

此处 dpi 已更改为新文件,但文件大小跳至 7.84MB

错在哪里?dpi 对文件大小有影响吗?

谢谢您的考虑。祝好运

4

1 回答 1

2

分辨率(ppi / dpi)对文件大小没有影响。它只是关于图像在物理尺寸上应该有多大的信息,即如何将像素大小转换为英寸。

当您使用不同的分辨率重新保存图像时,文件将完全相同,除了这两个值。

当您创建一个新位图并将图像绘制到该位图上时,新位图对象没有与之关联的文件类型,因此当您在未指定文件类型的情况下保存它时,它将被保存为 PNG 图像而不是 JPEG .

在不更改像素尺寸的情况下更改文件大小的方法是更改​​ JPEG 文件的压缩级别。

MSDN:如何:设置 JPEG 压缩级别

于 2013-03-17T13:30:54.403 回答