0

我遇到了以下问题:

// $data contains some image data

$gm = new gmagick;
$gm->readImageBlob($data);
$gm->resizeImage(
    100,
    50,
    gmagick::FILTER_LANCZOS,
    1
);

$gm->readImageBlob($data);
$gm->resizeImage(
    140,
    70,
    gmagick::FILTER_LANCZOS,
    1
);
$output = $gm->getImageBlob();

print_r($gm->getImageGeometry());

将打印

Array ( [width] => 100 [height] => 50 )

这是一个意想不到的结果。如果我用 imagick 而不是 gmagick 执行完全相同的代码,我会得到不同的(预期的)结果

Array ( [width] => 140 [height] => 70 )

另外,有趣的是,对于 gmagick,如果我省略该行

$output = $gm->getImageBlob(); 

然后我得到预期的图像尺寸 140x70..

我在这里错过了什么重要的东西吗?

谢谢!

4

1 回答 1

1

getimageblobimagick 和 gmagick 版本中的方法有一个区别。第二个重置内部计数器,因此您将始终拥有第一个添加图像的尺寸,而不是最后一个。

gmagick 的 getimageblob 版本

imagick 的 getimageblob 版本

看起来像一个错误,因为在重置计数器之前对图像缓冲区进行了检查。请注意,这个函数没有记录在 php net 的 gmagick 部分的任何地方,因此它可能不受支持和维护。

于 2012-06-13T19:20:16.817 回答