【问题标题】:PHP ImageMagick output image string to stdout instead of saving it to file [duplicate]PHP ImageMagick将图像字符串输出到标准输出而不是将其保存到文件中[重复]
【发布时间】:2012-05-13 12:54:11
【问题描述】:

我有以下代码:

$animation = 'animation.gif';

$watermark = 'watermark.jpg';

$watermarked_animation = 'watermarked.gif';

$cmd = "$animation -extent 400x255 -coalesce -gravity southwest -geometry +0+0 null: $watermark -layers composite -layers optimize";

exec("convert $cmd $watermarked_animation", $output);

print_r($output);

我想将图像字符串输出到标准输出而不是保存到文件中?

我怎样才能做到这一点?

提前谢谢你!

【问题讨论】:

  • 另外,您正在积极地为 convert 提供一个输出文件 ($watermarked_animation)。尝试将其替换为 - 以写入标准输出。
  • 在这种情况下 stdout 是什么意思 - 我对 Linux 一无所知。是否要在浏览器中显示 gif 而不保存?
  • @ccKep:我不想使用ImageMagick的php类。我只需要这个命令。我还想避免使用 3rd 方 php 脚本。
  • 该库不是第 3 方,它是 convert 使用的同一个库的包装器。无论如何,正如已经说过的:用- 替换你的输出文件名,你应该很高兴。

标签: php imagemagick exec stdout animated-gif


【解决方案1】:

您是否尝试在目标文件名的位置添加连字符?为我工作,但是没有用你更复杂的文件名测试它..

例如,这很好用:

convert test.jpg -size 50x50 -

要处理字符集,试试这个:

exec('LANG=\"en_US.UTF8\" convert test.jpg -size 50x50 -');

【讨论】:

  • 它输出到标准输出,但是当我使用 imagecreatefromstring 时文件看起来已损坏。好在文件有正确的宽度和高度。
  • 您应该能够使用正确的标头集来回显它,例如。 header('Content-Type: image/gif'); 在你的情况下。
  • 请查看我的更新答案
  • 添加 LANG=\"en_US.UTF8\" 会停止执行。至于呼应它,我知道它可以做到,但如果没有问题,它应该也可以与imagecreatefromstring 一起使用。
  • 使用system 成功了!呜呼! :)
【解决方案2】:

你也可以试试这个方法。

$im = new Imagick('image.jpg');
header("Content-type: image/jpeg");
$output = (string) $im;
echo $output;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    相关资源
    最近更新 更多