ImageMagick コマンドを利用しようとする際、ユーザーは Powershell ウィンドウ内でコマンドを実行する際に課題に直面していました。コマンドは cmd ウィンドウでシームレスに実行されます。括弧の前にバックスラッシュを追加して問題を解決しようとしても失敗しました。調査の結果、magick ディレクティブが実際に環境変数に含まれていることが判明しました。
Powershell では複雑なコマンドを実行できないにもかかわらず、単純なコマンドは問題なく実行されます。これは、問題が特に複雑なコマンドにあることを示唆しています。
ImageMagick は膨大なオプションと機能を提供しているため、引用符とエスケープには細心の注意が必要です。次のようなさまざまな環境でのコマンドの実行:
Bash :
magick IMAGE1.PNG \ \( IMAGE2.PNG -resize 50% -fill '#ff0000' -colorize 100% \) \ -composite -transparent 'hsl(40,50,60)' result.png
Windows CMD32:
magick IMAGE1.PNG ^ ( IMAGE2.PNG -resize 50%% -fill "#ff0000" -colorize 100% ) ^ -composite -transparent "hsl(40,50,60)" result.png
Powershell:
magick IMAGE1.PNG ` `( IMAGE2.PNG -resize 50% -fill "#ff0000" -colorize 100% `) ` -composite -transparent "hsl(40,50,60)" result.png
環境固有の構文制約に起因する潜在的な問題を回避するために、プラットフォームに依存しないアプローチではスクリプトを使用します。コマンドは「.mgk」拡張子を持つファイル内に含めることができ、ImageMagick はシェルの解釈や引用の問題を回避して直接実行できます。
script.mgk:
-size 640x480 xc:#ffff00 ( foreground.png -resize 50% ) -gravity center -composite -write result.png
呼び出し:
magick -script script.mgk
この手法を採用することにより、シェルはスクリプトで使用される記号や文字に依存せず、異なる環境間でのシームレスな実行が保証されます。
以上がPowershell では複雑な ImageMagick コマンドを実行できないのに、CMD では機能するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。