Bildbearbeitung

Aus Geisterle wiki
Wechseln zu: Navigation, Suche

Bildbearbeitung

Beim erstellen kleiner Videosequenzen bzw. animierten gifs bin ich einmal über die sehr hilfreiche Tools imagemagick gestolpert. Ich benutze die Tools seitdem für unterschiedliche Massenverarbeitungen im Zusammenhang mit unterschiedlichen Bildformaten.


animiertes .gif aus mehreren .jpgs erstellen

- In den Ordner der Bilder wechseln

$ cd ~/Bilder

Mit dem Tool convert können mehrere Bilder eines Formates zusammengefügt werden mit dementsprechendem output:

$ convert -delay 20 -loop 1 *.jpg ~/animiertes_Bild.gif

Zur Erklärung -delay für die Zeitspanne zwischen den Bildern in Millisekunden, -loop 1 führt dazu das das gif ein immer wieder von vorne anfängt, *.jpg -> alle jpeg Dateien und das Ziel


Bilder in verschiedenen Formaten konvertieren

convert <input-file> [optionen] output-file

Beispiel:

convert *.png *.jpg


Größe von Bilder ändern

convert quelle.jpg -resize 1024x768 ziel.jpg


automatische Rotation

Sehr genial finde ich die Funktionalität einer automatischen Rotierung der Fotos. Viele Kameras speichern als Metadaten diese Information mit ab. Diese kann man sich auslesen lassen und mit convert automatisch richtig drehen lassen. Abhängig ist dies von der Version von ImageMagick und ob die Informationen im Bildheader überhaupt gespeichert wurde. Beides kann man testen: ImageMagick Version:

# convert -list Orientation

Falls hier folgende Ausgabe erscheint ist die ImageMagick Version hoch genug:

TopLeft
TopRight
BottomRight 
BottomLeft
LeftTop
RightTop
RightBottom
LeftBottom

Bildheader:

 identify -format '%[exif:orientation]' bildname.jpg

Bei output einer 1 ist die Information im Header enthalten.

Ich lasse mir nun ein Bild auf 1024x768 Größe + richtige Ausrichtung konvertieren:

convert quelle.jpg -resize 1024x768 -auto-orient ziel.jpg

Das ganze noch in einer schönen for Anweisung um es auf viele Bilder anzuwenden mit verschieben in einen Unterordner "small" und einem output:

count=0
mkdir small
#       for f in *.jpg
       for f in *.JPG
       do
               #erstmal machen wir das bild kleiner und kopieren es nach small/
               convert $f -resize 1024x768 -auto-orient small/$f
               #ein zähler ist immer gut
               count=`expr $count + 1`
               echo "Bild $count verkleinert und in small/ kopiert"
       done