Wie kann ich die Größe einer PNG-Datei über die Befehlszeile ändern?

Wie kann ich die Größe einer PNG-Datei über die Befehlszeile ändern?

Angenommen, ich habe ein Bild namens 1.png, das derzeit

500px : height
1000px : width

Ich möchte die Größe wie folgt ändern:

50px : height
100px : width

Die Ausgabe muss im PNG-Format erfolgen, nicht im JPG-Format. Ein Beispiel wäre sehr willkommen.

Antwort1

Ich würde verwenden convertoder mogrifyvon derBildMagickSuite.

$ convert -resize 100x50 1.png 2.png

# or #

$ mogrify -resize 100x50 1.png

convertnimmt einen separaten Ausgabedateinamen an; erstellt eine separate Datei.
mogrifynimmt keinen separaten Ausgabedateinamen an; ändert die Datei an Ort und Stelle

Antwort2

Die Antworten, die Sie bisher erhalten haben, werden in diesem speziellen Fall funktionieren, da Ihre Quell- und Zielbilder das gleiche Seitenverhältnis haben. Wenn Sie jedoch eine beliebige Größe wählen möchten,Sie werden scheitern:

$ file foo.png 
foo.png: PNG image data, 1000 x 500, 8-bit/color RGB, non-interlaced
$ convert -resize 100x50 foo.png bar.png
$ file bar.png 
bar.png: PNG image data, 100 x 50, 8-bit colormap, non-interlaced

Wie Sie oben sehen, funktioniert die einfache Konvertierung einwandfrei, wenn die Proportionen des Bildes nicht geändert werden. Aber was, wenn Sie sie ändern möchten?

$ convert -resize 200x50 foo.png bar.png
$ file bar.png 
bar.png: PNG image data, 100 x 50, 8-bit colormap, non-interlaced

Wenn Sie also die Proportionen ändern, schlägt der obige Befehl fehl. Um converteine Bildänderung auf diese Weise zu erzwingen, müssen Sie !am Ende der Geometriespezifikation ein hinzufügen (und da es !sich bei vielen Shells um ein Sonderzeichen handelt, müssen Sie es als maskieren \!):

$ convert -resize 200x50\! foo.png bar.png
$ file bar.png 
bar.png: PNG image data, 200 x 50, 8-bit colormap, non-interlaced

Antwort3

Verwenden Sie hierfür Imagemagick.

Lesen Sie die Manpage zur korrekten Verwendung. Es sollte jedoch durch die Übergabe von Parametern funktionieren, etwa wie

convert 1.png -resize 50x100 1-resized.png

Antwort4

Eine Alternative zu ImageMagick ist das bewährte netpbm:

pngtopnm input.png | pnmscale -reduce 10 | pnmtopng > output.png

verwandte Informationen