AA_PO-24440_stylephotographs-123RF.jpg

© stylephotographs, 123RF

Bildbearbeitung mit Kommandozeilenwerkzeugen

Am laufenden Band

,
Kommandozeilenprogramme zur Bildbearbeitung punkten gegenüber den Tools mit grafischer Oberfläche durch einen entscheidenden Vorteil: Sie bieten vor allem beim Bearbeiten mehrerer Bilder deutlich mehr Flexibilität.

Sie kennen das sicher: Sie möchten die tollen Fotos von der letzten Linux-Veranstaltung unbedingt einem Bekannten schicken, also ab damit per Mail. Prompt erhalten sie die lästige Fehlermeldung, dass der Mailserver so große Anhänge nicht verarbeitet. Sie schicken sich also an, die Bilder zu verkleinern: Gimp aufrufen, im Menü Datei | öffnen das erste Bild laden, weiter ins Menü Bild | Bild skalieren, um das Bild genügend zu verkleinern, sodass der Mailserver es akzeptiert. Dieselbe Prozedur wiederholt sich für jedes einzelne Bild.

Auf der Kommandozeile

Wesentlich einfacher klappt das Ganze auf der Kommandozeile mithilfe von ImageMagick [1]. Praktisch alle Distributionen stellen das Tool in ihren Repositories bereit, sodass Sie es gegebenenfalls bequem über den Paketmanager nachinstallieren. Steht ImageMagick parat, dann setzen Sie einen Aufruf wie den folgenden ab:

$ convert -scale 50% bild.jpg small/bild.jpg

Er verkleinert das Bild bild.jpg in Höhe und Breite um 50 Prozent und schreibt das Ergebnis in die Datei bild.jpg im Unterverzeichnis small. Das mag für ein Bild noch umständlicher erscheinen, als dasselbe mit Gimp zu bewerkstelligen, aber mithilfe der Shell wenden Sie diesen Befehl sehr effizient auch auf viele Dateien an.

Üblicherweise liegen die Bilder in einem Verzeichnis und heißen dann beispielsweise bild001.jpg bis bild999.jpg. Um sie alle in einem Rutsch zu verkleinern, genügt eine kleine For-Schleife (Listing 1, erste Zeile). Nach wenigen Sekunden landen die verkleinerten Bilder im Verzeichnis small/. Weitere Informationen dazu finden Sie im Kasten "Multiplikator".

Listing 1

$ for i in bild*.jpg ; do convert -scale 50% "$i" "small/$i.jpg"; done
$ find . -maxdepth 1 -name "bild*.jpg" -exec convert {} small/{} \;
$ find . -maxdepth 1 -name "bild*.jpg" | parallel convert {} small/{}

Multiplikator

Kommandozeilentools spielen ihre Stärken in Zusammenarbeit mit der Shell aus, die viele Dateien mit demselben Kommando automatisch hintereinander verarbeitet. Im einfachsten Fall nutzen Sie dazu eine For-Schleife, wie in der ersten Zeile von Listing 1. Die Shell expandiert die Wildcard in bild*.jpg in eine Liste aller Bilder (echo bild*.jpg zeigt das Zwischenergebnis an), die sie dann in der Schleife nacheinander verarbeitet. Die Anführungszeichen sorgen dafür, dass der Befehl auch Dateien mit Sonderzeichen im Namen, wie etwa Leerzeichen, problemlos konvertiert.

Bei sehr umfangreichen Bildbeständen, bei denen die Dateinamen hintereinander geschrieben mehr als 131 072 Zeichen umfassen, erscheint die Fehlermeldung Die Argumentliste ist zu lang. Solche Probleme umgehen Sie mit dem Find-Befehl aus der zweiten Zeile von Listing 1. Er sucht im aktuellen Verzeichnis (find .) ohne Unterverzeichnisse (-maxdepth 1) Dateien, auf die das Muster bild*.jpg passt, und führt dann für jede davon den Befehl convert {} small/{} aus. Die geschweiften Klammern dienen dabei quasi als Platzhalter für das aktuelle Bild, der Backslash als Endekennzeichnung. Diese Kombination konvertiert beliebig viele Dateien.

Beim Bearbeiten sehr vieler Bilder weisen jedoch beide vorgestellten Methoden einen Nachteil auf: Sie konvertieren die Grafiken der Reihe nach. Bei den heute üblichen Multi-Core-CPUs lasten diese Methoden also immer nur einen einzelnen Kern aus. Für Abhilfe sorgt die Software GNU Parallel (Listing 1, letzte Zeile). Unter Umständen müssen Sie das Paket gnu_parallel über die Paketverwaltung nachinstallieren. Die Software erhält die Liste der zu verarbeitenden Dateien via Pipe und lastet automatisch jeden Core mit einem Convert-Job aus. Vergleichen Sie dazu die Auslastung mittels top mit jener von den ersten beiden Methoden, wenn Sie eine lange Liste von Bildern verarbeiten. Weitere Informationen zu GNU Parallel finden Sie in einem Artikel aus LU 06/2013 [11].

Fotomontagen und Weboptimierung

Manchmal ist das beste Bild eine Kombination aus mehreren. Ob es sich dabei um die Gesichter der Familie vom letzten Ausflug handelt oder um Screenshots aus einem Film – eine Bildmontage bietet häufig eine schöne Zusammenfassung. Damit ImageMagick sie gut anordnet, sollten die Bilder alle etwa dieselbe Größe besitzen:

$ montage bild1.jpg bild2.jpg bild3.jpg bild4.jpg -geometry +2+2 montage.jpg

Diese Technik wendet unter anderem auch die Javascript-Bibliothek jQuery an: Statt Hunderte kleine Bilder einzeln als Icons zur Verfügung zu stellen, übermittelt sie diese dem Browser als einzelnes Bild und zeigt dann per CSS nur den jeweils relevanten Teil an. Dadurch genügt bereits eine einzige HTTP-Verbindung zum Server, sodass die Seite schneller lädt.

Oft erlauben Webseiten auch nur den Upload eines einzelnen Bilds etwa zu einem Artikel. Mithilfe von montage kombinieren Sie mehrere und umgehen damit die ärgerliche Beschränkung.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 7 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Bildbearbeitung mit ImageMagick
    Wer nicht 1000 Urlaubsbilder von Hand skalieren, normieren, beschneiden oder mit Wasserzeichen versehen möchte, für den führt kein Weg an der Werkzeugsammlung ImageMagick vorbei.
  • Grafiken schnell passend gemacht
    Sei es für die Verwendung innerhalb von Web-Seiten oder andere Zwecke: Häufig müssen Grafiken von einem Format in ein anderes konvertiert und dabei noch in Größe und Qualität verändert werden. Mit convertaus dem ImageMagick-Paket machen Sie das schnell auf der Kommandozeile.
  • Profi-Funktionen von ImageMagick nutzen
    Vom Konvertieren von Negativen bis hin zum PDF fürs Fotobuch – mit ImageMagick und ein paar Zeilen Shell-Code meistern Sie jede Aufgaben ruck, zuck auf der Kommandozeile.
  • Sicherheitslücke in ImageMagick
    Die Bildbearbeitungssoftware ImageMagick liegt nicht nur vielen Linux-Distributionen bei, sie kommt auch auf Webservern zum Einsatz. Jetzt wurde eine dramatische Sicherheitslücke entdeckt. Ein Update von ImageMagick steht jedoch noch aus.
  • Zügiger Wechsel
    Manchmal muss man einen ganzen Schwung Bilder am Stück konvertieren. Hier macht ExactImage dem traditionellen ImageMagick Konkurrenz.
Kommentare

Infos zur Publikation

LU 12/2016: Neue Desktops

Digitale Ausgabe: Preis € 5,99
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Aktuelle Fragen

Drucker Epson XP-332 unter ubuntu 14.04 einrichten
Andrea Wagenblast, 30.11.2016 22:07, 2 Antworten
Hallo, habe vergeblich versucht mein Multifunktionsgerät Epson XP-332 als neuen Drucker unter...
Apricity Gnome unter Win 10 via VirtualBox
André Driesel, 30.11.2016 06:28, 2 Antworten
Halo Leute, ich versuche hier schon seit mehreren Tagen Apricity OS Gnome via VirtualBox zum l...
EYE of Gnome
FRank Schubert, 15.11.2016 20:06, 2 Antworten
Hallo, EOG öffnet Fotos nur in der Größenordnung 4000 × 3000 Pixel. Größere Fotos werden nic...
Kamera mit Notebook koppeln
Karl Spiegel, 12.11.2016 15:02, 2 Antworten
Hi, Fotografen ich werde eine SONY alpha 77ii bekommen, und möchte die LifeView-Möglichkeit nu...
Linux auf externe SSD installieren
Roland Seidl, 28.10.2016 20:44, 1 Antworten
Bin mit einem Mac unterwegs. Mac Mini 2012 i7. Würde gerne Linux parallel betreiben. Aber auf e...