【问题标题】:Imagemagick convert command not working through PHPImagemagick转换命令不能通过PHP工作
【发布时间】:2017-04-18 15:10:15
【问题描述】:

我正在尝试通过 PHP 运行 imagemagic 命令,这个命令可以在命令提示符下完美运行,但不能从 PHP 中运行,这可能是什么问题。其他简单的转换命令通过 PHP 工作

convert -size 101x111 -background none -fill '#fcfcfc' -pointsize 15 label:'Whitesdd' -trim \/var/www/html/clients/kahuna.in/uploads/kukui_single_nut_image/14925222350_color.png +swap -gravity center -composite \/var/www/html/clients/kahuna.in/uploads/kukui_single_nut_image/14925222350.png

通过 PHP

system("convert -size 101x111 -background none -fill '#fcfcfc' -pointsize 15 label:'Whitesdd' -trim \/var/www/html/14925222350_color.png +swap -gravity center -composite \/var/www/html/14925222350.png 2>&1", $var);

output os
convert: not authorized `Whitesdd' @ error/constitute.c/ReadImage/454. convert: no such image `/var/www/html/14925222350_color.png' @ error/mogrify.c/MogrifyImageList/8221. convert: no images defined `/var/www/html/14925222350.png' @ error/convert.c/ConvertImageCommand/3046.

【问题讨论】:

  • FWIW,有一个 PECL ImageMagick 扩展可以与原生 PHP 一起使用,这样你就不必执行 shell。

标签: php imagemagick imagemagick-convert


【解决方案1】:

不确定您的结果应该是什么样子,但这应该可以正常工作而不会产生任何错误:

您只需要一个可能是问题所在的图像的相对路径 像这样编写代码意味着您可以在使用有助于查找故障的变量时回显命令。 它还将代码分成可读的块。 您可能可以使用括号来帮助控制代码。

出于兴趣,我不使用 imagemagick API (imagick),因为我发现它不支持很多选项,您需要编写更多代码。

<?php
$cmd = "-size 101x111 -background none -fill '#fcfcfc' ".
" -pointsize 15 label:'Whitesdd' -trim input.png +swap ".
"-gravity center -composite 14925222350.png ";

exec("convert $cmd 14925222350.png ");
?>

【讨论】:

  • 嗨,正如我所提到的。命令在命令提示符下工作正常并提供所需的输出,但是当我在 exec 中复制相同的命令时,它给出了上述错误。
  • 你试过我的 PHP 代码了吗?您收到任何错误消息吗?您的代码两次使用输出图像。 Bonzo 的代码也是如此。您的系统是否限制您使用 exec()?
  • 嗨我试过你的代码,同样的输出。没有系统允许执行,我尝试了简单的转换命令,效果很好。但是当我尝试使用标签选项进行转换时,它不起作用。
  • 嗨我试过你的代码,同样的输出。系统允许执行命令,因为我尝试了完美的简单转换命令。但是当我尝试使用标签选项进行转换时,它不起作用。
【解决方案2】:

两个可能的问题。

首先,您的输出图像 14925222350.png 在您的代码中指定了两次,第一次在 cmd 中,第二次在 php 转换中。

其次,尝试添加转换的完整路径。

试试这个看看你得到什么错误信息:

<?php
exec("path2/convert $cmd 2>&1",$out,$returnval);
foreach($out as $text)
{echo "$text<br>";}
?>

您可以在哪里尝试不使用 path2/ 或提供您的转换路径。

【讨论】:

  • 嗨,是的,也尝试添加完整路径。相同的输出。同样正如我所说,简单的转换命令正在通过 PHP 工作,但是当我尝试带有标签的命令时,它在 PHP 中不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-20
  • 2017-06-20
  • 2011-05-27
  • 2016-06-30
相关资源
最近更新 更多