Dunkelkammer

Interaktive Bildbearbeitungsprogramme wie Gimp oder Photoshop bieten unzählige Funktionen. Für die Bearbeitung von Bilderserien eignen sich einfache Kommandozeilen-Werkzeuge jedoch besser.

In Pocket speichern vorlesen Druckansicht 3 Kommentare lesen
Lesezeit: 5 Min.
Von
  • Michael Riepe

Wer eine Reihe von Bildern auf dieselbe Art behandeln muss, kann das natürlich mit einem interaktiven Programm tun. Ein Dutzend oder mehr Bilder in ein Web- oder E-Mail-taugliches Format zu konvertieren und nebenbei noch Miniaturansichten für den Index zu generieren, dauert auf die Weise jedoch zu lang. Schneller und bequemer lässt sich die Aufgabe mit den Werkzeugen aus dem netpbm-Paket erledigen.

Langjährigen iX-Lesern dürfte die Programmsammlung noch unter ihrem alten Namen pbmplus bekannt sein. Die Namensänderung reflektiert die Tatsache, dass das Paket seit Jahren nicht mehr von seinem ursprünglichen Autor Jef Poskanzer, sondern von der Netzgemeinde weiterentwickelt und gepflegt wird.

Geblieben ist die „Toolbox“-Philosophie, die auch Unix zugrunde liegt: Für jeden Zweck das richtige Werkzeug. Anders als etwa das monolithische ImageMagick enthält die netpbm-Suite mehr als 300 einzelne Programme, die sich miteinander kombinieren lassen: Konverter wandeln Dateien ins interne Format und zurück, Editoren führen verschiedene Manipulationen aus, Generatoren erzeugen neue Bilder. Außerdem gibt es diverse Analyse- und Hilfsprogramme.

Zu den drei klassischen Dateiformaten PBM, PGM und PPM für Schwarzweiß-, Graustufen- und Farbbilder hat sich ein viertes gesellt: Eine Datei im PAM-Format (Portable Arbitrary Map) kann jeden der bisherigen Bildtypen enthalten - aber auch neue, etwa ein RGB-Farbbild mit zusätzlichem Transparenzkanal (RGB_ALPHA). Die netpbm-Tools lesen und schreiben Graustufen- und Farbbilder mit maximal 16 Bit pro Kanal. Mit pamdepth lässt sich die Farbtiefe ändern. Dazu muss man für maxval den größten darstellbaren Wert angeben, etwa 255 für 8 oder 65535 für 16 Bit. Lässt der Nutzer den Dateinamen weg, liest das Programm - wie fast alle netpbm-Tools - von der Standardeingabe. Das Ergebnis schreiben die Programme in der Regel auf die Standardausgabe.

Mit pamscale lassen sich Bilder vergrößern und verkleinern. Den Skalierungsfaktor kann der Nutzer mit -xscale= und -yscale= für X- und Y-Achse unterschiedlich wählen. Die Optionen -xsize= und -ysize= geben eine bestimmte Größe vor; verwendet man nur eine der beiden, lässt pamscale das Seitenverhältnis (aspect ratio) unverändert. pamscale -xyfit skaliert das Bild so, dass es komplett in die angegebene Bounding Box passt. Mit der Option -xyfill hingegen wird das Bild groß genug, dass es das Rechteck ganz ausfüllen kann. Die beiden Optionen eignen sich daher gut zum Erzeugen von Miniaturansichten.

Normalerweise verwendet pamscale eine einfache Interpolation, um die Pixel des neuen Bildes zu berechnen. Bei Fotos oder gescannten Dokumenten lässt sich die Bildqualität oft mit der Option -filter=sinc verbessern. Der Filteralgorithmus berechnet aus den Pixeldaten den Inhalt des Originalbildes und stellt davon einen „virtuellen“ Scan mit anderer Auflösung her. Die übrigen verfügbaren Filter arbeiten nach demselben Prinzip, aber mit anderen Parametern. Leider sind sie allesamt undokumentiert - aber wer optimale Bildqualität erreichen will, muss ohnehin etwas experimentieren.

Wer Bilder einfach nur auf ein ganzzahliges Vielfaches ihrer Größe „aufblasen“ will, kann pamenlarge verwenden. Das Programm kopiert jeden Pixel mehrfach in die Ausgabe, bei starker Vergrößerung sieht das Resultat daher „pixelig“ aus. Die Alternative pamstretch berechnet die Werte der „Füllpixel“ durch lineare Interpolation.

Gelegentlich sieht man im Web gekachelte Bilder. Sie lassen sich bequem mit pbmdice erzeugen: pbmdice -outstem=kachel -width=100 -height=100 input.pam etwa zerlegt ein Bild in 100 x 100 Pixel große Stücke namens kachel__.pam. Das Kommando pamundice -across= -down= ‘kachel_%1d_%1a.pam’ fügt die Teile wieder zusammen. Sind die Zeilen- oder Spaltennummern mehrstellig, muss der Nutzer die Formatangabe anpassen: kachel_%2d_%2a.pam etwa erlaubt zweistellige Zahlen.

Das Kommando pamcomp .pam .pam legt zwei Bilder übereinander. Dabei berücksichtigt das Programm den Transparenzkanal des Vordergrundbildes. Außerdem kann der Nutzer mit -alpha=maske.pgm eine Maske als PGM-Datei nachreichen. Mit -opacity= lässt sich die Lichtdurchlässigkeit des ganzen Overlays zwischen 0.0 (durchsichtig) und 1.0 (undurchsichtig) variieren. Das Produkt der drei Werte bestimmt das Endergebnis. Alpha-Masken lassen sich zum Beispiel mit ppmcolormask oder pambackground erstellen.

Existiert eine geeignete Maske, lassen sich Objekte leicht freistellen: pamstack -tupletype RGB_ALPHA bild.ppm maske.pgm etwa fügt einem Farbbild die Maske als Alpha-Kanal hinzu. Mit pamchannel lassen sich ein oder mehrere Kanäle aus einem Bild extrahieren. Leider mangelt es noch an geeigneten Konvertern für Bilder mit Transparenzkanal. pnmtopng und pngtopnm etwa können keine PAM-Dateien lesen oder schreiben und benötigen daher eine separate Datei für den Alpha-Kanal. (mr)