这个问题已经被提出(见下面的链接),但没有一个答案有效。所以我有这个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
答案 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版本。