【问题标题】:Reducing PNG file size in .NET减少 .NET 中的 PNG 文件大小
【发布时间】:2011-09-02 09:31:39
【问题描述】:

我经常使用 OptiPNG 或 pngcrush 来减小我的 PNG 图像的文件大小。

我希望能够在 .NET 应用程序中以编程方式执行此类操作。我正在动态生成发送到移动设备的 PNG,因此我想减小文件大小。

图像质量很重要,因此在这种情况下,PNG 肯定会胜过 jpeg。

我可以使用任何现有的库来执行此操作吗?

【问题讨论】:

  • 您是在为设定的屏幕尺寸调整文件大小,还是像 PNGOUT 一样最小化文件?
  • 文件最小化,如 PNGOUT。 OptiPNG 和 pngcrush 是类似的工具。
  • 我不相信那里有任何托管库。 OptiPNG 是开源的,因此可以移植代码。或者,尽管我怀疑它会产生结果,但尝试将您的 PNG 加载为位图(这应该会减少可能浪费空间的 PNG 元数据内容),然后再次将它们编码为 PNG:msdn.microsoft.com/en-us/library/…
  • PNG 是一种无损格式。使文件更小的唯一方法是删除细节和颜色内容,以便更好地压缩。使其成为有损格式。正是 JPEG 编码器所做的事情。
  • @Hans 你的第一句话是正确的,但你的第二句话不是。 PNGOUT 和类似的 无损 - 输出图像 file 通常以字节为单位更小,但其 pixels 与输入图像的像素相同.

标签: .net image png


【解决方案1】:

您为什么不尝试使用命令参数从您的应用程序中运行您命名的任何应用程序。或者,如果这不可行,请使用 Windows 自动化。

【讨论】:

  • 嗯,这在网络服务中有点恶心。我正在通过网络接收文件并调整它们的大小等。
【解决方案2】:

http://nquant.codeplex.com 上查看 nQuant。这将使用完全托管的代码将 32 位 PNG 量化到 8 位,而无需壳到 C 库。目前它实际上只是一个量化器,并且总是会转换为 8 位调色板,这可能会导致一些质量损失。我正在开发一种无损优化功能,希望很快就会推出。

【讨论】:

  • 我真的需要无损,所以我会屏息等待!
  • 对此有何更新?将 png 减少到绝对最小值的最佳方法是什么?
猜你喜欢
  • 2016-08-28
  • 1970-01-01
  • 2017-01-25
  • 1970-01-01
  • 1970-01-01
  • 2012-03-26
  • 2012-08-23
  • 2011-01-10
  • 1970-01-01
相关资源
最近更新 更多