」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼我無法在 Powershell 中執行複雜的 ImageMagick 命令,但它們可以在 CMD 中運行?

為什麼我無法在 Powershell 中執行複雜的 ImageMagick 命令,但它們可以在 CMD 中運行?

發佈於2024-11-08
瀏覽:599

Why Can\'t I Run Complex ImageMagick Commands in Powershell, But They Work in CMD?

ImageMagick 指令無法在Powershell 中運行,但在cmd 視窗中執行沒有問題

在嘗試使用ImageMagick 指令時,使用者在Powershell 視窗中執行它們時遇到了挑戰。這些命令在 cmd 視窗中無縫運行。嘗試在括號前添加反斜線來解決該問題也沒有成功。調查顯示,magick指令確實包含在環境變數中。

儘管無法在Powershell中執行複雜的命令,但簡單的命令執行沒有問題。這顯示問題出在複雜的命令上。

深入了解 ImageMagick 命令中的引號和引用

ImageMagick 提供了大量的選項和功能,因此需要在使用時仔細注意引用和轉義。在各種環境下執行命令,包括:

  • Bash/Unix/Linux Shells: Bash解釋特定字符,如#表示十六進制顏色,括號表示子進程,需要轉義或替代語法。
  • Windows CMD32/BATCH 檔案: 括號、小於和大於符號以及百分號等字元需要轉義,以防止與 shell 語法混淆。
  • Powershell: 括號與行連續字元需要使用反引號轉義才能正確執行指令。

不同環境的指令語法的具體範例

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 可以直接執行它,繞過shell 解釋和引用問題:

script.mgk:

-size 640x480 xc:#ffff00
( foreground.png -resize 50% )
-gravity center -composite -write result.png

調用:

magick -script script.mgk

通過採用這種技術,外殼仍然存在與腳本中使用的符號和字元無關,確保跨不同環境的無縫執行。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3