imagick给出了gif的宽度和高度错误?

时间:2019-03-15 06:09:21

标签: php imagemagick gd imagick

我正在使用Imagick进行图像处理,但对于1 gif图像,我的Imagick给出了错误 宽度和高度。 this is that image

  

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 个答案:

答案 0 :(得分:1)

内部图像堆栈迭代器指向最后读取的GIF帧。对于07gC.gif,最后一帧是单个像素。当使用具有优化图层的格式时,可以将内部迭代器重置为第一帧(在GIF中,这将是最大的键),或者合并所有帧(反向进行图层优化)。

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

..或..

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