是否可以在Android上控制png编码的图像质量?

Is it possible to control the image quality of png encoding on Android?

我正在尝试使用

将位图转换为 PNG
bitmap.compress(Bitmap.CompressFormat.PNG, quality, outStream);

然后共享文件。根据 documentation quality 参数对于 PNG 格式被忽略。

尽管它是一种无损格式,但我可以在将位图转换为 PNG 时控制图像质量吗?

或者我应该使用 JPEG,考虑到我要共享的图像没有任何透明度。另一方面,据我所知,图像的某些部分(大约 30-40%)填充了相同的颜色,这与 PNG 配合得很好。

PNG 没有品质因数。 PNG 压缩是无损的(即质量始终为 100%)。

但是,您可以在将图像交给压缩器之前降低图像质量,方法是减少颜色数量和透明度级别、不使用抗锯齿等,以使图像数据更易于压缩.

之后您还可以使用单独的优化器重新压缩 PNG 文件,例如 pngquant、pngcrush、imagemagick/graphicsmagick、zopflipng 或 optipng。

请注意 imagemagick/graphicsmagick 对于 PNG 压缩确实有一个 "quality" 值,但它与 JPEG 文件具有不同的含义(更高的 PNG "quality" 通常意味着更好的压缩但没有变化在图像外观中)。