Imagick 只为 gif 调整大小提供单页
Imagick only giving single page for gif resize
我查看了不同的问题(例如 this or this), and the php documentation。我检查了我的 Imagick 版本和 imagick::getVerison() 函数 returns
{"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 已创建并调整大小,但没有动画。 this is the image I'm testing with
对我来说效果很好。您可能使用的是旧版本的 Imagick,它具有 this bug
如果是这样,您可以升级或解决它:
file_put_contents('img' . rand().".gif", $imageObject->getImagesBlob());
顺便说一句,ImageMagick 的 6.6.9-7 版本将于今年 4 月推出 4 岁 - 它可能也值得升级。
我查看了不同的问题(例如 this or this), and the php documentation。我检查了我的 Imagick 版本和 imagick::getVerison() 函数 returns
{"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 已创建并调整大小,但没有动画。 this is the image I'm testing with
对我来说效果很好。您可能使用的是旧版本的 Imagick,它具有 this bug
如果是这样,您可以升级或解决它:
file_put_contents('img' . rand().".gif", $imageObject->getImagesBlob());
顺便说一句,ImageMagick 的 6.6.9-7 版本将于今年 4 月推出 4 岁 - 它可能也值得升级。