Hannes Birnbacher, Windhagen/Ww.

Bildbearbeitung mit ImageMagick

Vorbemerkung: Dies ist ein kurz gehaltener "Waschzettel im Web" mit meinen Notizen, welche der Möglichkeiten von ImageMagick als Ergänzung zu Bildbearbeitungsprogrammen wie GIMP mir für die Verwaltung und Aufbereitung von Foto-Dateien nützlich sein können. Meine Beschreibung gilt für die Linux-Version.

Was ist ImageMagick?

ImageMagick ist eine Sammlung von vielen einzelnen Funktionen zur Bildverarbeitung, die es bei http://www.imagemagick.org kostenlos für Windows und Linux herunterzuladen gibt. Das Hauptprogramm wird mit "display" aufgerufen, evtl. mit einer Bilddatei, und zeigt bei Rechtsklick mit der Maus ein Menü von bescheidener Brauchbarkeit. Die Stärken der Software liegen in der Fähigkeit, durch Eintippen eines einzigen Befehls eine Arbeit an einer Vielzahl von Bildern zu vollbringen, anstatt sie einzeln in ein Bildbearbeitungsprogramm einladen und die Arbeitsschritte für jedes neu vollziehen zu müssen.

Alle Bilder in einem Verzeichnis auf eine maximale Breite oder Höhe von 480 Pixel ändern.

Das vorhandene Seitenformat (nehmen wir mal an, 3:4) soll erhalten bleiben. Hochformat sollen also 360x480 Pixel groß werden, Querformat 480x360 Pixel.
Beispiel: Wir wollen eine Anzahl 5-Megapixel-Aufnahmen unserer Digitalcamera für eine Homepage verkleinern.
Befehl: mogrify -resize 480x480 *
Anmerkung: Die alten Bilddateien werden überschrieben - also nur auf Kopien arbeiten!
Hinweis: ist eine Gesamtbreite von 480 Pixel erwünscht, dürfen Hochformat-Bilder aber höher werden, so lautet der Befehl: mogrify -resize 480 *.
Soll die Gesamthöhe auf 480 Pixel beschränkt bleiben, aber die Breite sich je nach Seitenverhältnis bestimmten, so lautet der Befehl: mogrify -resize x480 *.
Man sieht bei diesem Beispiel: das Sternchen steht hier als "Joker" für "Zeichenkette aller Art", der Buchstabe "x" für "mal", also 360 mal 480 oder auch 640 mal 480 Pixel.

Copyrightvermerk o.ä. in jedes Bild reinschreiben (Dateiname mit Wildcards), dabei das Original überschreiben

Ein besonderer Font wird nicht vorgegeben. Der Text soll 10 Pixel vom senkrechten, 50 Pixel vom waagerechten Rand beginnen, defaultmäßig von links oben gezählt. Er soll 10 Punkte hoch werden und in grauer Farbe erscheinen. Alle Bilddateien, die mit einem kleinen ".jpg" enden, sollen dabei erfasst werden.
Befehl: mogrify -pointsize 10 -fill gray -draw "text 10,50 'Copyright Hannes Birnbacher'" *.jpg
Anmerkung: 1.) Nicht die Hochkommata um den Text vergessen, sonst versucht das Programm, den drin stehenden Text auszuführen statt hinzuschreiben.
2.) Man kann reinschreiben, von welchen Ecken die Zählung ausgehen soll. Wie auf einer Landkarte gibt es Norden oben, Süden unten, Westen links, Osten rechts, also heissen die Ecken NorthWest, NorthEast, SouthWest, SouthEast. Der Befehl, um einen Copyrightvermerk links ziemlich weit unten einzusetzen, lautet also: mogrify -pointsize 10 -fill gray -gravity SouthWest -draw "text 10,20 'Copyright Hannes Birnbacher'" *.jpg.

Alle JPG-Bilder in einem Verzeichnis auf eine bestimmte Qualität (hier fünfzig Prozent) komprimieren und die alten Versionen überschreiben:

Von der Digikam (oder auch aus dem Internet) heruntergeladene Bilddateien haben zwar normalerweise das komprimierte JPG-Format, sind aber nicht besonders klein und natürlich wird der Fotograf seine Einstellungen sowieso so gesetzt haben, daß eine möglichst hohe Qualität bestehen bleibt, zu Lasten des Speicherplatzes. Kopiert man seine Dateien dann etwa in eine Bildergalerie, so brauchen sie bei einer Bildgröße von 4...5 Megapixel locker über ein Megabyte Speicherplatz (bzw. Bandbreite im Download...), obwohl man bei einer Kompression auf ein Viertel Megabyte keinen Unterschied sehen würde. Alle Bilder öffnen, um sie nur wegen der Kompression mit einem Bildbearbeitungsprogramm zu bearbeiten, ist viel zu viel Arbeit. Ein typischer Einsatzfall für ImageMagick.
Befehl: mogrify -quality 50 *.jpg

Ein Bild beschriften, das Original unverändert lassen und die beschriftete Version unter anderem Dateinamen abspeichern

ImageMagick - Copyrightvermerk

"Mogrify" ist der Befehl, um viele Dateien zu ändern und mit der neuen Version zu überschreiben. Bei Convert bezieht sich der Befehl auf eine Datei, und der Output kann in eine andere Datei geschrieben werden.
Befehl: convert -pointsize 15 -fill gray -gravity SouthWest -draw "text 10,20 'Copyright Hannes Birnbacher'" 100_0729.jpg hemmerich.jpg
Anmerkung: convert ist der Universalbefehl für ziemlich alles.

Aus mehreren Bildern eines zusammensetzen (Tableau)

ImageMagick Tutorial Montage


Befehl:
 montage eins.jpg zwei.jpg drei.jpg vier.jpg -geometry +2+2 -resize 270x270  -frame 5  montiert.jpg
Dieser Befehl macht aus vier Bildern beliebiger Größe ein fünftes, hier montiert.jpg genannt. Die Optionen kann man weglassen, dann treten Defaults ein.
-geometry +2+2 (keine extra Leerstelle reinflicken!) legt fest, daß zwei Bilder nebeneinander und zwei Reihen übereinander erscheinen.
 -resize 270x270 bewirkt, daß die Bilder nicht den Default von 128 Pixel Breite einnehmen, sondern nur auf eine höchste Breite oder Höhe von 270 Pixel verkleinert werden.
-frame 5 macht einen 5 Pixel breiten Rahmen mit der Default-Farbe grau.  
Bemerkung: Man experimentiere auch mit "-bordercolor white" etc. und mit "border" statt "frame".
Beispiel: Für eine Auktion darf ich nur eine Bilddatei hochladen, ich will aber mehrere kleinere Ansichten eines Gegenstandes zeigen.

Exif-Daten verändern:

Exif-Daten (Aufnahmezeitpunkt usw.) weg, z.B. weil die Stützbatterie oder der Kondensator in der Kamera kaputt sind und man hat's auch nicht beim Batteriewechsel neu eingestellt? Das geht mit Imagemagick nicht, man braucht jhead dafür (auch das gibt's sowohl für Linux als auch für Windows). Näheres z.B. in diesem Artikel auf englisch.

So ein kleines Malheur habe ich z.B. korrigiert mit:
touch * (unter Linux: verpasse allen Bild-Dateien im Verzeichnis das heutige Datum und die momentane Uhrzeit)
jhead -dsft * (schreibe das Dateidatum und die Uhrzeit auch in den Exif-Header aller Bilder)
jhead -ta-7:00 * (da es jetzt gerade 7 Std. 0 Minuten später ist, als der Aufnahmezeitpunkt, setze die Zeit in den Exif-Daten aller Bilder um sieben Stunden null Minuten zurück).
Weitere Parameter sind "-ts" für eine Datumskorrektur in einem Schritt. Interessant sind auch Funktionen, die umgekehrt dem Dateinamen das Datum aus dem Header mit den Exifdaten anhängen.

Verlustlose Drehung (90-180-270 Grad):

Für verlustlose Drehung, insbesondere von vielen Bildern in einem Verzeichnis, verwende ich folgenden Befehl: jhead -cmd "jpegtran -rot 270 &i > &o" *.JPG.

Hat die Kamera einen Sensor zur Abspeicherung der korrekten Lage im Exif-Datenkopf der Bilder oder hat der Linux-User die Lage bereits in dem Programm Geequie festgelegt, so geht es auch einfacher:
jhead -autorot *.JPG.

Exif-Datum auch als Dateidatum einsetzen

Nach dem Überspielen von Kamera auf den PC als auch nach jeder Bildbearbeitung wird das Datum der letzten Bearbeitung als Dateidatum gespeichert. Möchte man in einem Verzeichnis und allen Unterverzeichnissen das Aufnahmedatum als Dateidatum da stehen haben, hilft der Befehl:

exiftool -r '-DateTimeOriginal>FileModifyDate' * .


zurück zu "Computer"

Url dieser Seite: http://hannes-birnbacher.de/computer/imagemagick.html
Kurzlesezeichen: http://tinyurl.com/5syjo5