convert

Für alle, die an größeren Mengen von Bild-Dateien die gleichen Operationen vornehmen müssen (Resizen, Zurechtschneiden, ...), aber keine Lust haben, dafür GIMP zu scripten oder einen kleinen Python-Code zu zimmern, lohnt es sich, einen Blick auf das zu ImageMagick gehörende Konsolen-Tool "convert" zu werfen.

Das Programm gehört unter Ubuntu zum Paket "imagemagick". Die Syntax ist denkbar einfach. Man spezifiziert die Input-Datei, die auszuführenden Operationen, und die Output-Datei.

Die meisten Anweisungen sind selbsterklärend und funktionieren meist auf Anhieb. Besondere Beachtung verdient aber das Geometry-String-Format (http://www.imagemagick.org/script/command-line-processing.php#geometry), das bei manchen Operationen (und auch abhängig von den verwendeten Dateiformaten) zu ungewöhnlichen und auf den ersten Blick nicht reproduzierbaren Ergebnissen führen kann.

Möchte man beispielsweise ein Bild auf die Maximalhöhe von 100 Pixeln zurechtschneiden, verwendet man intuitiv den folgenden Befehl:

convert input.gif -crop x100 output.gif

Die daraus resultierende GIF-Datei enthält mit "eog" zwar das gewünschte Ergebnis, im FireFox wird jedoch weiterhin eine scheinbar alte Version der Datei mit unveränderter Größe angezeigt. Öffnet man die Datei mit GIMP, eröffnet sich die Ursache: "convert" erzeugt offenbar zwei Ebenen untereinander, die eine mit dem abgeschnittenen, die andere mit dem übriggebliebenen Inhalt. "eog" zeigt nur erstere an, FireFox und andere Programme beide.

Abhilfe schafft bei diesem Verhalten der Geometry-Zusatz "!". Er sorgt dafür, dass der Verschnitt auch wirklich verschwindet und nur der gewollte Rest überbleibt. Der fertige Befehl sieht also wie folgt aus:

convert input.gif -crop x100! output.gif

Update

Um alle Bilder eines Ordners beispielsweise auf 75% zu verkleinern, genügt der folgende Befehl:

for a in *; do convert $a -resize 75% -antialias -quality 100% $a; done

Update 2

Um alle EPS-Dateien eines Ordners in JPEG-Dateien mit 600dpi Auflösung zu konvertieren, kann man den folgenden Befehl verwenden:

for a in `ls | grep .eps`; do convert -density 600 -background white -quality 100 $a ${a//.eps}.jpg; done

Tags: Linux