2

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

?>

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

搜索的链接:

没有一个解决方案有效: 使用 ImageMagick 生成图像而不保存到文件,但仍然在网站上显示它们

如何将我的 ImageMagick 代码转换为 iMagick? PHP-Imagemagick 图片展示

4

1 回答 1

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

于 2014-03-12T03:04:49.300 回答