Use Imagick to keep GIF animation

If Imagick is available, GIF will be saved using it to keep animation.
Otherwise the previous method will be used and the animation won't be kept.
This commit is contained in:
Jeremy Benoist 2019-05-10 15:32:29 +02:00
parent 6e67f41152
commit 9306c2a368
No known key found for this signature in database
GPG key ID: BCA73962457ACC3C
2 changed files with 13 additions and 1 deletions

View file

@ -103,6 +103,9 @@
"phpstan/phpstan-symfony": "^0.11.0",
"phpstan/phpstan-doctrine": "^0.11.0"
},
"suggest": {
"ext-imagick": "To keep GIF animation when downloading image is enabled"
},
"scripts": {
"post-cmd": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",

View file

@ -135,7 +135,16 @@ class DownloadImages
switch ($ext) {
case 'gif':
imagegif($im, $localPath);
// use Imagick if available to keep GIF animation
if (class_exists('\\Imagick')) {
$imagick = new \Imagick();
$imagick->readImageBlob($res->getBody());
$imagick->setImageFormat('gif');
$imagick->writeImages($localPath, true);
} else {
imagegif($im, $localPath);
}
$this->logger->debug('DownloadImages: Re-creating gif');
break;
case 'jpeg':