ImageMagick/PHP 大小调整问题:图像无法调整大小,但已安装 ImageMagick


ImageMagick/PHP Resizing Issue: Image Wont Resize, but ImageMagick is installed

我在使用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,所以这应该不是问题。 知道这里会发生什么吗?

返回代码 1 通常被视为错误。 0的意思是"未发生错误"。

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

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

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

尝试此操作以显示错误:

$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 而不是系统,如上所述,文件名应该在转换后直接出现,我不会使用 - 而是 _ 代替。

系统输出到屏幕和exec没有,所以在你的第一个代码中,你应该能够使用它:

system("convert -version"); 

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

echo "<pre>";
system("type convert"); 
echo "</pre>";