Heim >Backend-Entwicklung >Golang >Warum funktionieren ImageMagick-Befehle in CMD, schlagen jedoch in PowerShell fehl?
Problem:
Ein ImageMagick-Befehl zum Hinzufügen eines Wasserzeichen für ein Bild kann in PowerShell nicht ausgeführt werden, während es in CMD erfolgreich ausgeführt wird.
Ursache:
Der Befehl verwendet Sonderzeichen, die von verschiedenen Shells unterschiedlich interpretiert werden können (z. B. , Bash, CMD32, PowerShell).
Lösung:
Anführungszeichen und Shell-Syntax:
Bash: Escapen Sie Klammern mit Backslashes und setzen Sie Hashes in Anführungszeichen.
CMD32: Verwenden Sie Carets für Escapezeichen und verdoppeln Sie Prozentzeichen.
Powershell: Escape-Klammern mit Backticks.
Escape-Techniken:
Shell | Escape Character | Line Continuation |
---|---|---|
Bash | Backslash | Backslash |
CMD32 | Caret ^ | Caret ^ |
PowerShell | Backtick ` | Backtick ` |
Beispielbefehle:
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
Kreuz -Plattformlösung:
Um Shell-spezifische Anführungszeichenprobleme zu vermeiden, verwenden Sie die Option „-script“ von ImageMagick, um Befehle aus einer Datei zu lesen:
<code class="sh">magick -script script.mgk</code>
Skriptdatei ( script.mgk):
-size 640x480 xc:#ffff00 ( foreground.png -resize 50% ) -gravity center -composite -write result.png
Das obige ist der detaillierte Inhalt vonWarum funktionieren ImageMagick-Befehle in CMD, schlagen jedoch in PowerShell fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!