我使用Imagick进行图像处理但是对于1 gif图像我的Imagick给出了错误的宽度和高度。 this is that image
我的代码
$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
内部图像堆栈迭代器指向最后一个GIF帧读取。对于07gC.gif
,最后一帧是单个像素。使用具有优化层的格式时,要么将内部迭代器重置为第一帧(在GIF中,这将是最大的键),或者合并所有帧(反向层优化)。
$image = new \Imagick('O7gC.gif');
$image->setFirstIterator();
.. 要么 ..
$image = new \Imagick('O7gC.gif');
$image = $image->coalesceImages();