問題:
画像を追加するための ImageMagick コマンドCMD で正常に実行されているときに、PowerShell で画像へのウォーターマークの実行に失敗します。
原因:
コマンドは、シェルごとに異なる解釈が可能な特殊文字を使用しています (例: 、bash、CMD32、PowerShell)。
解決策:
引用符とシェル構文:
Bash: かっこをバックスラッシュでエスケープし、ハッシュを引用符で囲みます。
CMD32: エスケープにキャレットを使用し、パーセント記号を 2 倍にします。
Powershell: バッククォートで括弧をエスケープします。
エスケープ手法:
Shell | Escape Character | Line Continuation |
---|---|---|
Bash | Backslash | Backslash |
CMD32 | Caret ^ | Caret ^ |
PowerShell | Backtick ` | Backtick ` |
コマンド例:
Bash:
<code class="sh">magick IMAGE1.PNG \ \( IMAGE2.PNG -resize 50% -fill '#ff0000' -colorize 100% \) \ -composite -transparent 'hsl(40,50,60)' result.png</code>
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
クロス-プラットフォームの解決策:
シェル固有の引用符の問題を回避するには、ImageMagick の「-script」オプションを使用してファイルからコマンドを読み取ります:
<code class="sh">magick -script script.mgk</code>
スクリプト ファイル ( script.mgk):
-size 640x480 xc:#ffff00 ( foreground.png -resize 50% ) -gravity center -composite -write result.png
以上がImageMagick コマンドが CMD では機能するのに、PowerShell では失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。