pngcrush在某些图像上导致黑色背景

时间:2014-01-29 08:23:01

标签: php png pngcrush

我正在使用以下内容通过pngcrush优化一些png图像:

exec(
    "pngcrush -q -blacken -brute -reduce -rem alla -rem text -rem time {$source} {$destination}",
    $output,
    $return_var
);

优化效果非常好,但对于某些图像,png会创建透明度所在的黑色块。

当我删除-reduce选项时,问题就消失了,但是PNG优化做得很少,而且根本无法运行优化。

我假设问题与透明度有关,那么有没有办法告诉pngcrush,跳过-reduce命令,仅适用于没有透明度的图像?

2 个答案:

答案 0 :(得分:1)

请勿使用-blacken,因为这是导致问题的直接原因。

来自the changelog

  

添加了-blacken选项,可以更改任何颜色样本       在颜色类型为4或6的PNG文件中,全透明像素为零,       可能会提高其可压缩性。请注意,这是一个       不可逆转的有损变化:所有完全透明的底层颜色       像素丢失,如果它们还不是黑色的。

可能有些透明像素不像它们看起来那么透明。

答案 1 :(得分:0)

我在v1.7.65上遇到了这个问题,只有" -reduce"选项。相同的图像和命令在v1.7.86上运行良好。