【问题标题】:Open an image and re-save it with the same parameters, c#打开图像并使用相同的参数重新保存它,c#
【发布时间】:2016-07-26 07:00:51
【问题描述】:

在我的代码中,我打开一个位图图像并简单地重新保存它。它应该保持相同的质量和性能。但结果图像的大小发生了变化,尽管分辨率保持不变,并且视觉上没有变化。如何在不进行任何更改的情况下打开并保存图像? 我的代码:

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

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

更新:

我对JPG格式的图像做了同样的事情,大小保持不变。只有 PNG 正在改变它的大小。在另一个PNG文件大小变得更大。有没有办法避免这种情况?

【问题讨论】:

  • Bitmap.Save 默认情况下将图像保存在PNG 我认为。与您正在加载的图像格式相同吗?
  • PNG 是无损的,所以文件大小可能会改变,像素/质量本身保持不变。
  • 我使用下面的答案来确保我保存为 png,但大小仍在变化。 @CasparKleijne 我需要尺寸保持不变,可以这样做吗?

标签: c# image-processing save


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您可能以与原始文件不同的图像格式保存图像。例如,如果原始图像是GIF,你应该这样做:

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

    任何格式都可以这样。

    【讨论】:

    • 我正在打开一个.png文件并将其另存为.png,我尝试使用您的方式,但大小仍在变化。
    • @SamStone 那么,.Net png 算法可能与用于保存原始图像的算法不同,或者可能正在更改颜色深度,从而导致文件大小不同。只是为了检查,您可以尝试对 .net 生成的 png 文件执行相同的操作,我的意思是,打开并保存在第一步中生成的文件以查看它是否更改。您还可以使用任何图像信息软件来比较两个图像,看看是否有不同的东西......
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-22
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多