为什么imagick会在gif上两次调整最终页面的大小?

时间:2019-06-13 12:21:27

标签: php imagick

我使用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文件的最后一页可以正常工作
为什么会这样?

0 个答案:

没有答案