ImageMagick / PHP调整大小问题:图像不会调整大小,但安装了ImageMagick

时间:2012-06-04 15:16:46

标签: php imagemagick

我对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,因此不应该是问题。知道会发生什么事吗?

2 个答案:

答案 0 :(得分:1)

返回代码1通常被视为错误。 0表示“未发生错误”。

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

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

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

答案 1 :(得分: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 not system,如上所述,文件名应该在转换后直接使用,我不会使用 - 而是_而不是。

系统输出到屏幕和exec在你的第一个代码中不是这样你应该能够使用它:

system("convert -version"); 

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

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