Imagick 输出假图像

Imagick output false image

本页脚本在底部,

imagick classes Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator

ImageMagick version ImageMagick 6.5.4-7 2014-02-10 Q16

error_reporting(E_ALL); 
ini_set("display_errors", 1); 

$im = new Imagick("/home/palirsin/public_html/imagick/ie9.png");

$im->thumbnailImage(200, null);

$im->borderImage(new ImagickPixel("white"), 5, 5);

$reflection = $im->clone();
$reflection->flipImage();

$gradient = new Imagick();

$gradient->newPseudoImage($reflection->getImageWidth() + 10,$reflection->getImageHeight() + 10, "gradient:transparent-black");

$reflection->compositeImage($gradient, imagick::COMPOSITE_OVER, 0, 0);

$reflection->setImageOpacity( 0.3 );

$canvas = new Imagick();

$width = $im->getImageWidth() + 40;
$height = ($im->getImageHeight() * 2) + 30;
$canvas->newImage($width, $height, new ImagickPixel("black"));
$canvas->setImageFormat("png");

$canvas->compositeImage($im, imagick::COMPOSITE_OVER, 20, 10);
$canvas->compositeImage($reflection, imagick::COMPOSITE_OVER,20, $im->getImageHeight() + 10);

header("Content-Type: image/png");
echo $canvas; 

给这张照片的脚本
https://www.alirsin.com/imagick/info.php

但是正确图片是底部
http://www.irfansahin.com/imagick/info.php

脚本有什么问题。

您的代码看起来不错,并且给出的结果与您在我的机器上所期望的结果相似,这意味着几乎可以肯定是使用有问题的 ImageMagick 版本导致了您的问题。

ImageMagick 版本 6.5.4-7 于 2009-07-30 发布,在错误修复方面相当古老。我强烈建议您使用最新版本的 ImageMagick,既可以使您的代码正常工作,也可以解决几个安全问题。