当前位置: 首页 > 编程语言 > C#

是否提供托管PNG优化库?分享

时间:2023-04-10 23:07:41 C#

托管的PNG优化库可用吗?我希望在我的构建(TFS2010构建工作流)中构建PNG优化(各种PNG“sqeezer/squisher”)。我想创建一个新的构建活动,就像我所有的活动一样,我更喜欢用很少的依赖来管理所有代码。我已经搜索(用谷歌搜索)并找到了许多用于PNG优化的不同PNG库。PNGOUT、PNGCRUSH、OptiPNG等。它们都不是.NET。他们看起来都很棒。我不想从我的代码活动中调用EXE文件(单独的进程),因为你永远不知道会发生什么(不是很可靠)。所以我认为PNGGauntlet可能是一个选择。但快速查看已安装的应用程序,它只是一个调用二进制pngout.exe的C#GUI。这正是我不想做的。所以我的问题是:是否有用于PNG压缩的开源和/或免费.NET库(DLL)?我刚刚发现了这个:nQuant。来自项目页面:nQuant是一个.net颜色量化器,可生成高质量的256色8位PNG图像。nQuant经常将32位图像的大小减小到比原始图像小3倍,其质量超过标准C命令行实用程序生成的质量。我用一些示例PNG对其进行了测试,它确实产生了良好的8位输出,比.NET自己的8位编码器小,并且没有可见的抖动,即使对于抗锯齿图像也是如此。但我遗漏了一件事:处理速度可能有点慢,但不幸的是,库没有优化代码的并行化变体。我正在为此制定解决方案。更新(2013年1月21日),我重构了代码,它现在运行速度提高了10倍,即使没有pthreads。叉子在这里:http://nquant.codeplex.com/SourceControl/network/forks/breki74/nQuantFaster更新(2013年2月24日),我的叉子被合并到主干中。请享用。如果您决定编写自己的C#代码:我已经编写了一个开源的纯JavaPNG编码器/解码器PNGJ,您可能会发现它很有用;移植到C#应该不难。它只是一个编码器,而不是优化器,但它支持所有写入选项/策略(包括每行不同的过滤器),因此您可以轻松地将启发式方法插入其中。更新:我写了一个C#PNG编码器/编码器PngC,从Java(PngJ)移植,它是开源的,自2012年12月以来它支持所有PNG变体(除了不写交错的PNG,只读它们)经过相当多的谷歌搜索最近在StackOverflow上发现了其中一个或两个问题,我认为没有可用的C#库。但是,OptiPNG是开源C代码,因此可以移植到C#。或者,将C代码从exe和P/Invoke拉入单独的库。似乎还有其他开源库,不一定专门用于优化:http://www.libpng.org/pub/png/pngcode.html为反高潮道歉,我一直在追求其中之一,我得出的结论是,目前的答案是不存在的。我热切地等待更正。根据thisanswer,有几个.net库可以用来优化png大小我用来优化png的工具有:所有分享的内容,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——Converttopng8:如果颜色很少(比如截图),那么我使用[pngnq][2]或者Gimp的索引颜色模式量化到256色。PNG8可以小于png24或png32。有关详细信息,请参见[PNG8–明显的赢家][3]。Optipng,一个快速通用的png优化器。[C#PNG优化教程][9]详细介绍了如何从C#运行optipng。最后[pngout][4]很慢,但通常(80-90%的时间)设法将png压缩得低于optipng。首先运行optipng,因为optipng会自动执行pngout不会尝试的其他优化。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: