PHP. Оптимизация изображений с помощью Imagick

147
26 декабря 2017, 18:01

Для оптимизации изображений использую PHP расширение Imagick, Imagick::setImageCompression устанавливает сжатие на изображение, в качестве параметра принимает одну из констант сжатия класса Imagick, вот они:

Что означает каждая из констант, или какую из констант будет правильней использовать для PNG, JPEG, и GIF?

Цель сжатия получить изображение как можно меньшего размера без потери качества, или с незначительной потерей.

Answer 1

Самый простой вариант — это проверить эмпирическим путем. Определите оптимальные для вас тип и степень сжатия по эталонному изображению.

$imagickSrc = new Imagick("test1.png");
$compressionList = [Imagick::COMPRESSION_UNDEFINED,
                    Imagick::COMPRESSION_BZIP,
                    Imagick::COMPRESSION_LZW,
                    Imagick::COMPRESSION_RLE,
                    Imagick::COMPRESSION_ZIP,
                    Imagick::COMPRESSION_JPEG2000,
                    Imagick::COMPRESSION_LOSSLESSJPEG,
                    Imagick::COMPRESSION_NO
];
for ($s = 0; $s < count($compressionList); $s++) {
  for ($i = 0; $i < 100; $i++) {
    $imagickDst = new Imagick();
    $imagickDst->setCompression($compressionList[$s]);
    $imagickDst->setCompressionQuality($i);
    $imagickDst->newPseudoImage(
          $imagickSrc->getImageWidth(),
          $imagickSrc->getImageHeight(),
          'canvas:white'
    );
    $imagickDst->compositeImage(
        $imagickSrc,
        Imagick::COMPOSITE_ATOP,
        0,
        0
    );
    $imagickDst->setImageFormat("png");
    $imagickDst->writeImage("test1_compressed{$s}_{$i}.png");
  }
}
READ ALSO
Переформировать строку

Переформировать строку

Есть строка $str = 25-12-2017 15:55

168
Как сразу получить новые твиты с Twitter?

Как сразу получить новые твиты с Twitter?

Нужно сделать так что бы, как только появился твит, программа получала его текстЧем быстрее реакция тем лучше

190
Помогите в PHP со switch

Помогите в PHP со switch

Делаю в скрипте подгрузку модулей в файле indexphp с помощью switch и серверной директивы $_SERVER['SCRIPT_NAME'], но ничего не выходит

216
PHP Регистр имени файла и ошибка 404

PHP Регистр имени файла и ошибка 404

Столкнулась с проблемой при скачивании файла, имя которого написано с разным регистром, для примера patch-ruRU-103MPQ

179