【问题标题】:Imagick output false imageimagick 输出假图像
【发布时间】:2015-01-15 15:38:57
【问题描述】:

此页面脚本位于底部,

imagick 类 Imagick、ImagickDraw、ImagickPixel、ImagickPixelIterator

ImageMagick 版本 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

脚本出了什么问题。

【问题讨论】:

  • 改用php.net/manual/en/imagick.writeimage.php。你不是在呼应你的形象,你是在呼应想象的对象。我在 imagick 实现 __toString() 的文档中看不到任何地方
  • 我在呼应,但工作我可以看到图像。
  • @MarcB 我本周添加了该文档 - 它应该会在本周出现在文档中。

标签: imagemagick imagick


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-10-17
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 2019-01-19
    • 2016-02-26
    • 2010-12-29
    • 1970-01-01
    相关资源
    最近更新 更多