PHP:显示ImageMagick图像而不保存到像GD这样的服务器

时间:2012-10-20 16:11:05

标签: php imagemagick

这个问题已经被提出(见下面的链接),但没有一个答案有效。所以我有这个ImageMagick脚本,我用它来着色PNG,它工作得很好,但问题是它实际上在服务器上生成文件。我想要的正是GD所做的图像处理,然后在不实际保存图像的情况下显示它。

这是我用来为图像着色的ImageMagick代码。此代码执行转换并在服务器上生成一个额外的文件,即最终图像。

<?php

$source = "src.png";
$final = "FINAL.png";
$color = "#00FF00";

exec("convert $source  -threshold 100% +level-colors '$color',   $final");

?>

这是一个GD示例代码,可以执行图像处理并直接显示最终图像,而无需将额外图像保存到服务器:

<?php
header('Content-Type: image/png');

$source = "src.png";

$im = imagecreatefrompng($source);
imagefilter($im, IMG_FILTER_GRAYSCALE);
imagepng($im);
imagedestroy($im);

?>

所以基本上我想要在第一个例子中完成的图像处理,但不保存额外的图像并在浏览器中显示输出。

搜索链接:

所有解决方案均无效: Generate images with ImageMagick without saving to file but still display them on website

如何将我的ImageMagick代码转换为iMagick? PHP-Imagemagick image display

1 个答案:

答案 0 :(得分:1)

使用您的代码供其他人学习的直接示例。 我在Godaddy的共享Linux服务器上使用相同的方法。

<?php
    $source = "src.png";
    $color = "#00FF00";

    $cmd = "convert $source -threshold 100% +level-colors '$color',".
    " -unsharp 0.2x0.6+1.0 -quality 50 JPG:-";

    header("Content-type: image/jpeg");
    passthru($cmd, $retval); 
    exit();
?>
  • 注意: - 您确定正在使用“ -threshold 100%+ level-colors'$ color',”吗?阈值100%会将图像推至黑色。那么 + level-colors'#00FF00',就会产生一个稳定的绿色图像。我假设您已经简化了此演示的代码。

  • 注意: - “ + level-colors'$ color'”,不适用于Godaddy的服务器。它在我的家庭服务器上工作正常。可能是Godaddy服务器上安装的过时的ImageMagick版本。