Home / LinuxUser / 2012 / 08 / Bildbearbeitung mit ImageMagick

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Eingedost
(161 Punkte bei 4 Stimmen)
Aufteiler
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

Bilder im Griff

Bildbearbeitung mit ImageMagick

Beschneiden mit Convert

Zum Beschneiden von Bildern verwendet Convert den Parameter -crop, gefolgt von einer Größenangabe, die sich aus der Ausschnittsgröße und der Startposition zusammensetzt. So führt beispielsweise der Befehl:

$ convert bild-alt.jpg -crop 500x300+0+0 bild-neu.jpg

dazu, dass Convert aus dem Ursprungsbild eine Auswahl von 500 Punkten nach rechts und 300 Punkten nach unten ausschneidet und dabei an der Postion 0/0 beginnt, was der linken oberen Ecke des Bilds entspricht (Abbildung 2). Dagegen schneidet das Kommando:

$ convert bild-alt.jpg -crop 500x300+300+100 bild-neu.jpg

erst 300 Bildpunkte rechts und 100 Bildpunkte unterhalb der linken oberen Bildecke eine Auswahl von 500 mal 300 Punkten aus (Abbildung 3).

Abbildung 2

Abbildung 2: Das Beschneiden von Bildern gehört zu den leichtesten Übungen von Convert.

Abbildung 3

Abbildung 3: Jeder Ausschnitt lässt sich durch Angeben von Offsets an einer beliebigen Stelle im Bild platzieren.

Der Parameter -crop weist noch einige Besonderheiten auf. Lassen Sie beispielsweise die Positionsangabe weg, erzeugt er so viele durchnummerierte Ergebnisbilder, wie mit dem vorgegebenen Ausschnitt in X- und Y-Richtung ins Originalbild passen (Abbildung 4).

Abbildung 4

Abbildung 4: Mit -crop können Sie ein Bild auch in mehrere Teile zerlegen.

Die Option -gravity erlaubt, den Ursprung zur Berechnung des Offsets zu verschieben. Als Vorgabe fungiert dabei 0/0 (oben links), daneben gibt es die Angaben NorthWest, North, NorthEast, West, Center, East, SouthWest, South sowie SouthEast. Der Befehl:

$ convert bild-alt.jpg -gravity Center -crop 50%+0+0 bild-neu.jpg

ließe sich beispielsweise dazu einsetzen, das Resultat aus Abbildung 5 zu erzielen.

Abbildung 5

Abbildung 5: Mit der Option -gravity verschieben Sie den Ursprung für einen Bildausschnitt.

Der Vollständigkeit halber sei noch die Option +repage erwähnt, die Sie korrekterweise noch anfügen müssen, weil sonst beim Beschneiden mit -crop die Werte für canvas und offset im Header des Bildes falsch erhalten bleiben.

Selbstverständlich können Sie die oben gezeigte Formatumwandlung sowie das Skalieren und Beschneiden, wie alle Convert-Optionen, auch in einem Befehl kombinieren.

Stapelverarbeitung

Möchten Sie die genannten Operationen auf 100 oder mehr Fotos anwenden, kommen die Fähigkeiten der Shell ins Spiel. Im folgenden Beispiel schreiben wir die verkleinerten Ausgangsbilder in einen zuvor angelegten separaten Ordner (fotos-small/), damit die Originalbilder erhalten bleiben. Das Szenario lässt sich wahlweise mit eine For- oder While-Schleife umsetzen:

$ for i in .jpg; do convert $i -resize 1280x960 -gravity SouthWest -crop 1024x768+0+0 +repage fotos-small/$i; done

Das Kombinieren von -resize, -crop und -gravity bietet sich insbesondere dann an, wenn Sie eine große Anzahl von Bildern etwa für einen Web-Katalog normieren müssen. In einem Szenario aus dem Bereich Produktmanagement sah sich der Autor beispielsweise mit der Situation konfrontiert, Produktbilder eines Fahrradherstellers für einen Online-Katalog in ein einheitliches Format zu bringen, wobei die vom Hersteller gelieferten Bilder nicht durchgängig das gleiche Format besaßen. Außerdem war beim Fotografieren nicht immer der gleich Ausschnitt und die gleiche Perspektive gewählt worden. Die Ausgangsbilder sollten am Ende ausnahmslos über einen Rand verfügen, damit sie sich sich optisch gut in das Layout des Katalogs einfügten.

Als Lösung wurden die Bilder zunächst mit -resize in ein einheitliches Format gebracht, das geringfügig größer als das Zielformat ausfiel. Nach Festlegen eines neuen Koordinatenursprungs (links unten) mit -gravity entstand durch Anwenden von -crop eine Auswahl, die in X- und Y-Richtung 10++Pixel unter dem Zielformat lag. Anschließend erhielten alle Bilder mit convert -bordercolor white -border 5 einen umlaufenden weißen Rand von 5 Pixeln.

Tip a friend    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 158 Punkte (11 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 05/2014

Aktuelle Ausgabe kaufen:

Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Bilder vergleichen mit diffimg
Bilder vergleichen mit diffimg
Tim Schürmann, 01.04.2014 12:40, 1 Kommentare

Das kleine Werkzeug diffimg kann zwei (scheinbar) identische Bilder miteinander vergleichen und die Unterschiede optisch hervorheben. Damit lassen sich nicht nur Rätsel a la „Orignial und Fäls...

Aktuelle Fragen

programm suche
Hans-Joachim Köpke, 13.04.2014 10:43, 8 Antworten
suche noch programme die zu windows gibt, die auch unter linux laufen bzw sich ähneln sozusagen a...
Funknetz (Web-Stick)
Hans-Joachim Köpke, 04.04.2014 07:31, 2 Antworten
Bei Windows7 brauche ich den Stick nur ins USB-Fach schieben dann erkennt Windows7 Automatisch, a...
Ubuntu 13.10 überschreibt immer Windows 8 Bootmanager
Thomas Weiss, 15.03.2014 19:20, 8 Antworten
Hallo Leute, ich hoffe das ich richtig bin. Ich habe einen Dell Insipron 660 Ich möchte gerne Ub...
USB-PTP-Class Kamera wird nicht erkannt (Windows-only)
Wimpy *, 14.03.2014 13:04, 15 Antworten
ich habe meiner Frau eine Digitalkamera, AGFA Optima 103, gekauft und wir sind sehr zufrieden dam...
Treiber
Michael Kristahn, 12.03.2014 08:28, 5 Antworten
Habe mir ein Scanner gebraucht gekauft von Canon CanoScan LiDE 70 kein Treiber wie bekomme ich de...