一尘不染

C#:寻求PNG压缩算法/库[关闭]

algorithm

我需要压缩或至少降低用户上传到我的站点的某些png图像的质量。我已经调整了大小,但是对于图像大小并没有太大的作用。

为.net 4.0或更低版本寻求png /图像压缩或质量损失算法或库。


这是我当前保存/转换图像的方式:

Image mainImg = ImageHelper.ResizeImage(bmp, 600, 500, false);
mainImg.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);

阅读 218

收藏
2020-07-28

共1个答案

一尘不染

不幸的是,.NET(以及构建.NET图形库的GDI+)不支持PNG的任何编码参数。实际上,如果您使用PNG编码器Clsid在图像上调用GetEncoderParameterList,则会收到“未实现”异常。

更不幸的是ImageFormat和ImageCodecInfo都是密封类,您不能只向.NET本地访问的内容添加新的编解码器。微软对此事投下了球。

这意味着您的选择按受虐程度递减的顺序排列:1)在.NET中自己实现一个实现RFC 2083的保存功能;
2)在将libpng移植到.NET的基础上实现一个保存功能; 3)调用原本是直接从libpng构建

libpng具有出色的文档,并且在可用性和许可证许可方面都是免费的。

2020-07-28