0

我对 ImageMagick 有一个奇怪的问题。

在同一个脚本中,我有以下代码:

 $ct = system("convert -version");
 echo $ct;

并显示以下响应:

 Version: ImageMagick 6.6.0-4 2012-04-26 Q16 http://www.imagemagick.org Copyright: Copyright (C) 1999-2010 ImageMagick Studio LLC Features: OpenMP

但是,当我尝试这样做时:

 $ct2 = system("convert -resize 800x600 test-image.jpg test-image2.jpg", $retval);
 echo $retval;

它返回 1,但图像不会调整大小。不应该在文件名“test-image2.jpg”下创建第二个图像,调整大小吗?我检查了目录权限,它们设置为 0777,所以这不应该是问题。知道这里会发生什么吗?

4

2 回答 2

1

试试这个来显示错误:

$array = array(); 
echo "<pre>"; 
exec("convert test-image.jpg -resize 800x600 test-image2.jpg 2>&1", $array);  
echo "<br>".print_r($array)."<br>";  
echo "</pre>";  

此外,我使用 exec 而不是 system,如上所述,文件名应该在 convert 之后直接出现,我不会使用 - 而是 _ 。

系统输出到屏幕而 exec 在您的第一个代码中没有这样,您应该能够使用它:

system("convert -version"); 

试试这个,看看 IM 的路径是什么,然后尝试将 convert 更改为可能类似于 /usr/local/bin/convert 的路径

echo "<pre>";
system("type convert"); 
echo "</pre>";
于 2012-06-04T16:24:06.217 回答
1

的返回码1通常被认为是错误。0表示“没有发生错误”。

我认为这是因为您的论点顺序错误。ImageMagick 想要一个输入文件、一堆操作,然后是一个输出文件。尝试切换参数的顺序:

convert test-image.jpg -resize 800x600 test-image2.jpg

一个好主意是查看 PHP 的IMagick扩展。它为大多数 ImageMagick 函数提供了面向对象的接口。

于 2012-06-04T15:22:38.080 回答