ホームページ  >  記事  >  バックエンド開発  >  ImageMagick コマンドが CMD では機能するのに、PowerShell では失敗するのはなぜですか?

ImageMagick コマンドが CMD では機能するのに、PowerShell では失敗するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-26 08:58:02878ブラウズ

Why Do ImageMagick Commands Work in CMD but Fail in PowerShell?

ImageMagick コマンドが PowerShell ウィンドウで実行されず、CMD ウィンドウで実行される

問題:

画像を追加するための 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 &quot;#ff0000&quot; -colorize 100% ) ^
  -composite -transparent &quot;hsl(40,50,60)&quot; result.png

Powershell:

magick IMAGE1.PNG `
   `( IMAGE2.PNG -resize 50% -fill &quot;#ff0000&quot; -colorize 100% `) `
  -composite -transparent &quot;hsl(40,50,60)&quot; 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。