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」というファイル名で 2 つ目の画像を作成し、サイズを変更してはいけませんか? ディレクトリのアクセス許可を確認したところ、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 を使用します。ファイル名は変換後に直接指定する必要があり、代わりに - を使用しません。

システムは画面に出力しますが、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 に答える