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