Wie verwende ich bei einem Bild den Imagemagick, um die Größe auf ein bestimmtes Seitenverhältnis zu ändern? zum Beispiel auf ein Seitenverhältnis von2:1
Wie verwende ich bei einem Bild den Imagemagick, um die Größe auf ein bestimmtes Seitenverhältnis zu ändern? zum Beispiel auf ein Seitenverhältnis von2:1
Antworten:
Zwei Dinge zu beachten:
Ich spreche nacheinander an:
1. Einfache Größenänderung mit oder ohne Seitenverhältniskonvertierung
imagemagick
Standardmäßig wird das bereits vorhandene Seitenverhältnis eines Bildes während der Konvertierung beibehalten. Verwenden dieses Testbildes:
Bei einer Größe von 100 x 100 schlägt ein Versuch, die Größe mit dieser Syntax auf 300 x 150 zu ändern, im Hintergrund fehl :
convert test.png -resize 300x150 300_test.png
und erzeugt ein 150x150 Bild:
Um zu erzwingen imagemagick
, dass Ihr Bild mit einem Seitenverhältnis von 2: 1 tatsächlich erstellt wird, ist die folgende geringfügig andere Syntax erforderlich:
convert test.png -resize 300x150\! distort.png
Und dies erreicht ein Seitenverhältnis von 2: 1, wobei natürlich das Originalbild verzerrt wird:
2. Zuschneiden mit Seitenrationsumrechnung
Wenn Sie es vorziehen, ein Bild einfach und automatisch auf ein bestimmtes Seitenverhältnis zuzuschneiden, verwenden Sie am einfachsten eines der ImageMagick-Skripte von Fred: 'Aspectcrop' . Die Verwendung auf unserem Testbild ist einfach:
./aspectcrop -a 2:1 test.png Fred_wins.png
und das resultierende Bild wurde erfolgreich auf ein Verhältnis von 2: 1 zugeschnitten:
Die andere zu manipulierende Option -g gravity
definiert, welcher Teil des Bildes zum Zuschneiden verwendet wird. Der Standardwert ist Mitte. Alle Optionen sind:
Um ein Beispiel dafür mit Nord zu geben :
./aspectcrop -a 2:1 -g n test.png north.png
Die Ergebnisse sind:
Wenn Sie dieses Skript für eine Stapelladung von Bildern in einem einzelnen Verzeichnis verwenden müssen, können Sie eine Bash-for-Schleife verwenden. Platzieren Sie das Skript zuerst richtig und setzen Sie es auf ausführbar:
sudo mv aspectcrop /usr/local/bin
sudo chmod +x /usr/local/bin/aspectcrop
Dies erleichtert die Verwendung des Skripts erheblich. Führen Sie dann die 'for'-Schleife aus einem Verzeichnis von Bildern aus:
for i in *.png
do
aspectcrop -a 2:1 -g n "$i" "${i%.png}_cropped.png"
done
Diese Schleife kann je nach Art der Eingabe- und Ausgabedateien, verschiedenen Speicherorten usw. variiert werden. Sie können auch eine ähnliche Syntax erstellen, die rekursiv nach Bildern sucht. Viele Möglichkeiten ...
Ich finde das alles ziemlich cool :)
Verweise:
Hier ist ein Skript für alle JPGs im Ordner, um den 4: 3-Aspekt zu überprüfen.
#!/bin/sh
EXTENSION="*.jpg"
for file in $EXTENSION
do
currAspect=$(identify -format "%[fx:w/h]" "$file")
roundFloat=$(printf '%.*f\n' 3 "$currAspect")
if [ $roundFloat != 1.333 ]
then
echo "name: $file aspect: $currAspect rounded: $roundFl$
fi
done