我遇到了以下问题:
// $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 )另外,有趣的是,对于这个花招,如果我省略这一行
$output = $gm->getImageBlob(); 然后我得到了预期的图像大小140x70。
我是不是遗漏了什么重要的东西?
谢谢!
发布于 2012-06-14 03:20:17
imagick和gmagick版本中的getimageblob方法有一个区别。第二个重置内部计数器,因此您将始终具有第一个添加的图像的尺寸,而不是最后一个。
gmagick's version of getimageblob
imagick's version of getimageblob
看起来像是一个错误,因为在重置计数器之前对图像缓冲区执行了检查。请注意,在php net的gmagick部分中没有记录此函数,因此它可能不受支持,也未得到维护。
https://stackoverflow.com/questions/11021440
复制相似问题