1

Ubuntu12サーバーでImageMagick6.6.9を使用しています。私が抱えている問題は、shell_exec関数を使用してPHPを介して実行する(ただし、試した)ImageMagick変換コマンドに、PHP関数がエスケープするexec文字が含まれていることです。escapeshellcmd\

これが私のPHPコードです:

$result = exec(escapeshellcmd($convertString));

これが私のサンプルの変換コマンドです:

/usr/bin/convert "/Users/rich/Sites/example/1234.JPG" -quality 85 -auto-orient -thumbnail "640x88>" "/Users/rich/Sites/example/1234-thumb.jpg"

そして最後に、実行された後の変換コマンドがありますescapeshellcmd

/usr/bin/convert "/Users/rich/Sites/example/1234.JPG" -quality 85 -auto-orient -thumbnail "640x88\>" "/Users/rich/Sites/example/1234-thumb.jpg"

問題は、エスケープ\>文字がImageMagickエラーになることです。

convert:オプション-thumbnail'の引数が無効です:640x88> @ error / convert.c / ConvertImageCommand/2770。

誰かが私がこれを回避できる方法を知っていますか?私はImageMagickのドキュメントをトロールしましたが、問題を認識しているものの、特殊なUNIX文字を使用せずに画像のサイズを変更する他の方法を提供していないようです。

唯一の縮小フラグ('>'フラグ)は、UNIXシェルとWindowsバッチスクリプトの両方で特殊文字であり、その文字をエスケープする必要があります(シェルではバックスラッシュ'>'を使用し、Windowsバッチでは' ^>'を使用します) 。また、HTML Webページでも特別であるため、PHPスクリプトでも特別な処理が必要になる場合があります。

よろしくお願いします。

4

1 に答える 1

1

サイズオプションの周りに余分な"(引用符)があったことがわかりました。-thumbnail "640x88\>"参考までに、エスケープされた正しい変換コマンドは次のようになっている必要があります。

/usr/bin/convert "/Users/rich/Sites/example/1234.JPG" -quality 85 -auto-orient -thumbnail 640x88\> "/Users/rich/Sites/example/1234-thumb.jpg"

于 2013-01-23T10:25:55.857 に答える