PHP + Imagick – сжатие PNG

Как эффективно сжимать PNG? В моем случае изображения представляют собой небольшие изображения в оттенках серого с прозрачностью.

В настоящее время я играю с этим:

// ... $im->setImageFormat('png'); $im->setImageColorspace(\Imagick::COLORSPACE_GRAY); $im->setImageCompression(\Imagick::COMPRESSION_LZW); $im->setImageCompressionQuality(9); $im->stripImage(); $im->writeImage($url_t); 

Поскольку Imagick не предлагает COMPRESSION_PNG , я пробовал LZW, но почти нет изменений в размер файла (обычно это даже больше, чем раньше).

Если я открою изображение в GIMP и просто сохраню его, размер файла резко сократится (например, 11 341 B -> 3,763 B или 11 057 B -> 3,538).

Каков правильный способ сохранения сжатого PNG с помощью Imagick?

Посмотрите на первую часть этого ответа:

  • Преобразование многостраничного PDF в PNG и обратно (Linux)

Он объясняет синтаксис значения + для параметра ImageMagick -quality для PNG.

Я определенно не уверен, что это правильный способ сохранить PNG, но мой способ:

 $im->setImageCompression(\Imagick::COMPRESSION_UNDEFINED); $im->setImageCompressionQuality(0); 

Это дает мне отличное качество изображения и размер файла, очень похожий на PS6, сохраненный «Сохранить для Интернета». Иногда даже меньшие размеры!