我使用imagick调整gif图片的大小,但是它将在gif文件的最后一页上调整两次大小
gif结果如下:
第0〜17页
最后一页(page18):
代码如下:
<?php
function createWithImagick($upload_image)
{
$Imagick = new Imagick($upload_image);
$format = $Imagick->getImageFormat();
$getSize = $Imagick->getImageGeometry();
$width = $getSize['width'];
$height = $getSize['height'];
$thumb_width = 200;
//Keep aspect ratio
$thumb_height = ceil(($thumb_width / $width) * $height);
$Imagick->resizeImage($thumb_width, $thumb_height, Imagick::FILTER_LANCZOS, 1);
$Imagick = $Imagick->coalesceImages();
$resize_x = ceil($thumb_width / 2);
$resize_y = ceil($thumb_height / 2);
foreach ($Imagick as $frame) {
$frame->scaleImage($thumb_width, $thumb_height, $resize_x, $resize_y);
$frame->setImagePage(0, 0, 0, 0);
}
$Imagick = $Imagick->deconstructImages();
$result = $Imagick->writeImages('path/to/save/file.gif', true);
$Imagick->clear();
return $result;
}
一个奇怪的问题是,如果我在$Imagick = new Imagick($upload_image);
之前再次添加$Imagick = $Imagick->coalesceImages();
,像这样:
$Imagick = new Imagick($upload_image);
$Imagick = $Imagick->coalesceImages();
$resize_x = ceil($thumb_width / 2);
$resize_y = ceil($thumb_height / 2);
gif文件的最后一页可以正常工作
为什么会这样?