Imagick только дает одну страницу для изменения размера GIF

Я просмотрел разные вопросы (такие как этот или же этот) и PHP документация. Я проверил свою версию Imagick и функция imagick :: getVerison () возвращает

{"versionNumber":1641,"versionString":"ImageMagick 6.6.9-7 2014-03-06 Q16 http:\/\/www.imagemagick.org"}

Поэтому я не использую версию с ошибками (или, по крайней мере, я так не думаю), которая упоминается в вопросах и документах. Я использую следующий код, чтобы попытаться изменить размер GIF.

public function resizeGif($path, $x, $y, $maintainRation = true) {
$imageObject = new Imagick($path);

$format = $imageObject->getImageFormat();
if ($format != "GIF") {
return false;
}

$imageObject = $imageObject->coalesceImages();

$y = $this->getAspectRation($imageObject->getImageWidth(),
$imageObject->getImageHeight(),
$x);

foreach ($imageObject as $frame) {
$frame->thumbnailImage($x, $y);
$frame->setImagePage($x, $y, 0, 0);
}

$newImageDir = 'img' . rand();
$imageObject = $imageObject->deconstructImages();
$imageObject->writeImages($newImageDir, true);

$md5 = md5_file($newImageDir);

return $md5;
}

Но когда я запускаю функцию, gif создается и изменяется, но анимация отсутствует. это изображение, с которым я тестирую

0

Решение

Он отлично работает для меня. Возможно, вы используете старую версию Imagick, которая имеет эта ошибка

Если это так, вы можете обновить или обойти это:

file_put_contents('img' . rand().".gif", $imageObject->getImagesBlob());

Кстати, версии 6.6.9-7 ImageMagick в апреле исполнится 4 года — возможно, стоит обновить и ее.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]