我需要压缩或至少降低用户上传到我的站点的某些png图像的质量。我已经调整了大小,但是对于图像大小并没有太大的作用。
为.net 4.0或更低版本寻求png /图像压缩或质量损失算法或库。
这是我当前保存/转换图像的方式:
Image mainImg = ImageHelper.ResizeImage(bmp, 600, 500, false); mainImg.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);
不幸的是,.NET(以及构建.NET图形库的GDI+)不支持PNG的任何编码参数。实际上,如果您使用PNG编码器Clsid在图像上调用GetEncoderParameterList,则会收到“未实现”异常。
更不幸的是ImageFormat和ImageCodecInfo都是密封类,您不能只向.NET本地访问的内容添加新的编解码器。微软对此事投下了球。
这意味着您的选择按受虐程度递减的顺序排列:1)在.NET中自己实现一个实现RFC 2083的保存功能; 2)在将libpng移植到.NET的基础上实现一个保存功能; 3)调用原本是直接从libpng构建
libpng具有出色的文档,并且在可用性和许可证许可方面都是免费的。