Imagick дает неправильную ширину и высоту GIF? - PullRequest
1 голос
/ 15 марта 2019

Я использую Imagick для обработки изображений, но для изображения в 1 gif мой Imagick дает неправильную ширину и высоту. это изображение

https://i.gifer.com/O7gC.gif

мой код

$image = new \Imagick('O7gC.gif');
$image->getImageWidth();     // gives 1px
$image->getImageHeight();    // also gives 1px
$image->identifyImage();     // [geometry]['width'], and height is also 0

но

getimagesize () дает правильную информацию.

Другие изображения работают нормально, только это единственное изображение не работает?

, а настройка

$image->mergeImageLayers(\Imagick::LAYERMETHOD_FLATTEN);

дает правильную ширинуи рост, я не могу понять это поведение, пожалуйста, объясните?я использую imagick

phpinfo imagick

Imagick compiled with ImageMagick version : ImageMagick 7.0.7-11 Q16 x64 2017-11-23 http://www.imagemagick.org

Imagick using ImageMagick library version : ImageMagick 7.0.7-11 Q16 x64 2017-11-23 http://www.imagemagick.org
ImageMagick release date : 2017-11-23

1 Ответ

1 голос
/ 15 марта 2019

Внутренний итератор стека изображений указывает на последний прочитанный кадр GIF. Для 07gC.gif последний кадр - один пиксель. При работе с форматами, которые имеют оптимизированные слои, либо сбросьте внутренний итератор на первый кадр (в GIF-файлах это будут самые большие связи), либо объедините все кадры (отмените оптимизацию слоя).

$image = new \Imagick('O7gC.gif');
$image->setFirstIterator();

.. или ..

$image = new \Imagick('O7gC.gif');
$image = $image->coalesceImages();
...