在.NET中减小PNG文件大小

9

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

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

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

是否有任何现有的库可供我用于此?


你是想要将文件调整为固定屏幕尺寸大小,还是像PNGOUT一样进行文件最小化处理? - Adam Houldsworth
2
我不相信有任何托管库。OptiPNG是开源的,因此可以可能移植代码。或者,虽然我怀疑它是否会产生结果,但可以尝试将PNG作为位图加载(这应该可以削减可能浪费空间的PNG元数据),然后再次将它们编码为PNG:http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.pngbitmapencoder.aspx - Adam Houldsworth
1
PNG是一种无损格式。使文件变小的唯一方法是删除细节和颜色内容,以便更好地压缩它。这会使其成为有损格式。这正是JPEG编码器所做的事情。 - Hans Passant
1
@Hans,你的第一句话是正确的,但第二句话不正确。PNGOUT和类似工具是无损压缩 - 输出图像文件通常比输入图像文件更小,但其像素与输入图像的像素相同。 - AakashM
@AakashM:你能提供一个解释它是如何工作的链接吗?听起来很有趣... - Ian
显示剩余2条评论
2个回答

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

1
嗯,从网络服务内部来看有点糟糕。我正在通过网络接收文件并进行调整大小等操作。 - teedyay

0

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


我需要无损的,所以我将屏息以待! - teedyay
有更新吗?最好的方法是将PNG文件压缩到绝对最小。 - Moon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接