ImageMagick Анимированное GIF-сжатие - PullRequest
0 голосов
/ 29 января 2019

У меня есть следующий код для создания анимированного GIF из списка изображений.Работает нормально но хотелось бы сжать.Я перепробовал много разных стратегий, но полученный размер всегда точно одинаковый.

Что я делаю не так?

<?php

namespace AppBundle\Service;

class GifCreator
{
    public function createGifFromImages(array $images)
    {
        // https://stackoverflow.com/a/10095594
        $gif = new \Imagick();
        $gif->setFormat("gif");

        // adds all the images
        foreach ($images as $image) {
            $frame = new \Imagick();
            $frame->readImage($image->getRealPath());
            // THE FOLLOWING 2 LINES ARE NOT WORKING
            //$frame->setImageCompression(\Imagick::COMPRESSION_JPEG);
            //$frame->setImageCompressionQuality(5);
            $frame->setImageDelay(50);

            $gif->addImage($frame);
        }

        // optimizes the GIF
        $gif->optimizeImageLayers();

        // https://hotexamples.com/examples/-/Imagick/optimizeImageLayers/php-imagick-optimizeimagelayers-method-examples.html
        // THE FOLLOWING 2 LINES ARE NOT WORKING
        //$gif->setImageCompression(\Imagick::COMPRESSION_LZW);
        //$gif->setImageCompressionQuality(30);

        // writes the GIF
        $tempPath = tempnam(sys_get_temp_dir(), 'GIF');
        $result = $gif->writeImages($tempPath, true); 

        return $tempPath;
    }
}

Кажется, что addImageне применяет надлежащие фильтры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...