pngcrush вызывает черный фон на некоторых изображениях
Я использую следующее для оптимизации некоторых изображений png с помощью pngcrush:
exec(
"pngcrush -q -blacken -brute -reduce -rem alla -rem text -rem time {$source} {$destination}",
$output,
$return_var
);
Оптимизация работает очень хорошо, но для некоторых изображений png создает эти черные блоки там, где идет прозрачность.
Проблема исчезает, когда я удаляю опцию -reduce, но тогда оптимизация PNG делает очень мало, и она не имеет смысла запускать оптимизацию.
Я предполагаю, что проблема заключается в прозрачности, так есть ли способ сказать pngcrush, пропустить команду -reduce, только для изображений, которые не имеют прозрачности?
2 ответа
Не использовать -blacken
, поскольку это является непосредственной причиной вашей проблемы.
Добавлена опция -blacken, чтобы разрешить изменение образцов цвета любых полностью прозрачных пикселей на ноль в файлах PNG с типом цвета 4 или 6, что потенциально улучшает их сжимаемость. Обратите внимание, что это необратимое изменение с потерями: основные цвета всех полностью прозрачных пикселей теряются, если они еще не были черными.
Возможно, некоторые из ваших прозрачных пикселей не так прозрачны, как кажутся.
У меня была эта проблема на v1.7.65 только с опцией "-reduce". То же изображение и команда отлично работали на v1.7.86.