打开图像并使用相同的参数重新保存,c#

时间:2016-07-26 07:00:51

标签: c# image-processing save

在我的代码中,我打开一个位图图像,只需重新保存即可。它应该保持相同的质量和属性。但结果是图像尺寸发生变化,虽然分辨率保持不变,但在视觉上没有变化。如何打开图像并保存,而不进行任何更改? 我的代码:

            Bitmap img = (Bitmap)Image.FromFile(path, true);
            img.Save(path);

将来它应该只改变图像的不透明度,但是现在它只是打开并保存它。为什么图像尺寸会发生变化?它的尺寸变得比它小(386对301 Kb)

更新

我用JPG格式图像做了同样的,尺寸保持不变。只有PNG正在改变其规模。另一个PNG文件的大小越来越大。有没有办法避免这种情况?

3 个答案:

答案 0 :(得分:0)

您可能正在以与原始文件不同的图像格式保存图像。例如,如果原始图片是GIF,您应该执行以下操作:

img.Save(path, System.Drawing.Imaging.ImageFormat.Gif);

和任何格式一样。

答案 1 :(得分:0)

System.Drawing中的PNG编码器不会特别严重压缩图像,也无法更改图像。许多人试图使用的EncoderParameters属性被忽略了。

可用软件中的不同PNG编码器提供不同的压缩功能,您将看到的差异在于压缩的差异。第一个可能在没有压缩的情况下保存,第二个在压缩较重的情况下保存。

答案 2 :(得分:0)

如果文件大小发生变化,您不必担心。 PNG是一种无损格式,可在保留所有信息的同时压缩文件。这意味着,即使文件大小减少,每个像素的信息和确切颜色也将保持不变。

文件的大小取决于用于保存图像的库所使用的算法。对于不同的库和程序,算法可以略有不同。这就是为什么图像的大小会发生变化的原因。你无法避免这种情况。