.net中的PNG压缩

Eht*_*ham 3 c# png image image-compression

我想将位图压缩到具有不同压缩级别的PNG,因为这些级别在C#中的JPEG压缩中可用.我有20到30张不同尺寸的图像,可在1秒内处理.是否有任何库可以在不同压缩级别的PNG中实现此压缩?

Osm*_*ran 6

无损压缩方法不必是单一质量水平.我的意思是,一些无损压缩方法有一些参数来选择速度/压缩比权衡.这取决于作者.

至于PNG压缩,它实际上是一堆过滤器和deflate算法.考虑deflate有一个冗余编码阶段(例如,两个不同的压缩器可以产生完全不同的输出,但它们仍然可以被任何有效的解压缩器解压缩),难怪几个程序输出不同的PNG.请注意,我仍然没有考虑过滤器.有几个过滤器,没有"最佳"过滤器,即它的质量因图像而异.

由于它的冗余功能,有些人编写了PNG优化器,它将常规PNG作为输入,以产生较小的PNG,而不会产生任何感知损失.其中一些应用了一些技巧,例如用一些可预测的颜色填充完全透明的区域来增加压缩.但是,一般来说,他们以蛮力的方式调整参数.

现在,对您的问题最简单的答案可能是您有两个选择:

  1. 如果您要在桌面环境中运行可执行文件,则可以使用这些工具之一作为优化程序.但是,在共享主机中,由于可能的权限,您无法使用它们.
  2. 您可以在.NET中编写自己的PNG编写器,其中考虑了一些暴力参数调整.

  • 我认为,很明显,我在说压缩级别(即以压缩大小表示的输出质量)。此外,我已经明确指出:“我的意思是,某些无损压缩方法具有一些参数来选择速度/压缩比的平衡。” (2认同)