PHP:如何正确运行convert imagemagick命令?

时间:2017-05-29 11:58:52

标签: php imagemagick-convert

我有一个简单的php文件,用于运行来自。

的imageMagick转换命令

我遇到的问题是,当我运行我的代码时,它并没有创建它所设想的图像,而且我的页面上也没有任何错误,所以我无法弄清楚是什么问题是!

我知道我已正确安装了imageMagick,因为这可以正常工作:

<?php
shell_exec("convert input.jpg \
          -gravity Southwest   -background '#f48fb0'  -splice 0x44 \
          -pointsize 30 -fill white -annotate +10+4 'Some image Caption Goes here'   output.jpg");
?>

但这并不能创造任何东西,也不会出现任何错误:

    <?php
shell_exec("width=`identify -format %w input.jpg`; \
  convert -background '#0008' -fill white -gravity center -size ${width}x30 \
          caption:"Faerie Dragons love hot apple pies\!" \
          dragon.gif +swap -gravity south -composite  anno_caption.jpg");
    ?>

我按照这里的教程进行操作:

http://www.imagemagick.org/Usage/annotating/

有人可以就此问题提出建议吗?

提前致谢。

正如所建议的那样,我尝试了这段代码并且它没有任何输出并且没有创建图像:

shell_exec("width=identify -format %w input.jpg \
convert -background '#0008' -fill white -gravity center -size ${width}x30 \
caption:'Faerie Dragons love hot apple pies\!' input.jpg +swap -gravity south -composite  anno_caption.jpg");

2 个答案:

答案 0 :(得分:1)

shell_exec("width=`convert input.jpg -format '%w' info:` \
convert -background '#0008' -fill white -gravity center -size ${width}x30 \
caption:'Faerie Dragons love hot apple pies\!' dragon.gif +swap -gravity south -composite  anno_caption.jpg");

试试这个!我假设你有input.jpg和dragon.gif文件。

答案 1 :(得分:1)

这就是我编写代码的方式,尽管它可以正常工作。它可能不会创建您正在寻找的图像,但我不知道您需要的结果。

如果您使用的是V7,则可能会错过识别部分

**修改了代码以将Shell_exec更改为执行标识行**

<?php
// Read the width into a variable
$width= exec("identify -format %w input.jpg");

// Put the command into a variable
// Allows you to echo the command to show what you are actually running
$cmd = "-background \"#0008\" -fill white -gravity center -size {$width}x30".
" caption:\"Faerie Dragons love hot apple pies\!\" ".
" dragon_sm.gif +swap -gravity south -composite ";
echo $cmd;

// Run the command with some error reporting
// In production I would either disable the error display
// or remove the error reporting totally
$array=array();
echo "<pre>";
exec ("convert $cmd anno_caption.jpg 2>&1", $array); 
echo "<br>".print_r($array)."<br>"; 
echo "</pre>";

?>