Einfach zauberhaft

Bildbearbeitung auf der Shell

01.10.2005
Bildbearbeitung muss nicht zwingend den Start eines grafischen Programms und etliche Mausklicks bedeuten: Das ImageMagick-Paket bietet zahlreiche Kommandozeilen-Tools, mit denen Sie schnell und effektiv Ihre Bilder in die richtige Form bringen.

Bei ImageMagick [1] handelt es sich um eine Sammlung von Bildbearbeitungs-Programmen, die zum Standardumfang sämtlicher Linux-Distributionen gehört. Mit dabei sind nicht nur ein Bildbetrachter (display), sondern auch zahlreiche Kommandozeilen-Tools, mit denen Sie beispielsweise Screenshots erstellen (import), die Bildgröße anpassen (convert), Grafiken in verschiedene Formate konvertieren, Bilder zusammenfügen (montage) und vieles mehr.

Die einzelnen Befehle bringen jede Menge Optionen mit, welche das Arbeiten auf der Kommandozeile flexibel machen, und ganz Shell-typisch lassen sich natürlich Programme kombinieren und große Aufgaben mit kleinen Skripten beschleunigen und vereinfachen – das Arbeiten mit den ImageMagick-Tools ist einfach zauberhaft.

Informativ – Identify

Informationen, wie Höhe, Breite, Dateigröße und Farbtiefe, ja sogar, ob ein Bild beschädigt ist, lesen Sie schnell mit dem Kommando identify aus. Dem Kommando übergeben Sie wahlweise eine oder mehrere Dateien:

$ identify *.png
huhn.png PNG 539x525 DirectClass↩
357kb 0.430u 0:01
hahn.png[1] PNG 599x601 PseudoCl↩
ass 50c 37kb 0.070u 0:01
easter.png[2] PNG 948x764 Direct↩
Class 266kb 0.380u 0:01

Für etwas mehr Informationen hängen Sie zusätzlich die Option -verbose an. Damit dabei die lange Liste der Informationen nicht aus dem Terminal herausscrollt, leiten Sie die Ausgabe am besten an einen Pager wie Less oder More weiter:

$ identify -verbose eas↩ter.png | less

Wem das Zuviel des Guten ist, der schränkt den Informationsfluss mit dem Parameter -format und weiteren Argumenten ein. So steht %w beispielsweise für die Breite, %h für die Höhe, %b für die Dateigröße oder %f für den Dateinamen. Eine vollständige Liste aller Parameter für -format finden Sie in der ImageMagick Manpage. Die einzelnen Argumente hinter -format schließen Sie in Hochkommas ein, damit die Shell das Prozentzeichen nicht auswertet:

$ identify -format "%f:↩ %wx%h %b" easter.png
html.png: 948x764 266kb

Bildschirmfotos mit Import

Unter Linux existieren mehrere Tools, mit denen Sie Screenshots erstellen können. Eine schnelle Alternative zu grafischen Programmen – wie zum Beispiel Gimp oder KSnapshot – bietet ImageMagicks Komponente Import. Den entsprechenden Befehl import tippen Sie entweder auf der Kommandozeile oder in ein Schnellstarter-Fenster unter Gnome oder KDE, das Sie über [Alt-F2] starten.

Weiterhin übergeben Sie dem Programm mindestens noch den Dateinamen für das Bildschirmfoto als Argument. Durch die von Ihnen gewählte Dateiendung weiß das Programm, in welchem Format Sie den Screenshot speichern wollen. Die ImageMagick-Programme unterstützen zahlreiche verschiedene Formate – eine vollständige Übersicht finden Sie in den Handbuchseiten (man imagemagick).

Geben Sie import Dateiname.png ein, legt Import das fertige Bild im PNG-Format ab. Der Mauszeiger verwandelt sich nach dem Drücken der Eingabetaste in eine Art Fadenkreuz: Klicken Sie nun entweder in ein Fenster, um von diesem ein Foto zu machen, oder ziehen Sie mit gedrückt gehaltener linker Maustaste einen Rahmen auf, um einen bestimmten Bereich festzuhalten. Das Programm gibt zwei kurze Signaltöne aus – einen, wenn Import die Arbeit beginnt, und einen, wenn das Foto im Kasten ist.

Wollen Sie zusätzlich zur Anwendung auch den Fensterrahmen mit aufnehmen, setzen Sie die Option -frame ein: import -frame Dateiname.png. Klicken Sie nun mit der Maus beispielsweise in ein Terminalfenster, zeigt der Screenshot anschließend auch dessen Fensterleiste.

Möchten Sie den gesamten Desktop fotografieren, brauchen Sie nicht mühsam mit der Maus einen Rahmen um den ganzen Bereich aufziehen, sondern verwenden den Parameter -window mit dem Bereich root. Soll Import noch 10 Sekunden mit der Aufnahme warten, nehmen Sie einen Shell-Trick zur Hilfe: Das Programm Sleep sorgt dafür, dass sich eine Aktion um eine definierte Anzahl von Sekunden verzögert. Um zwei Befehle nacheinander auszuführen, setzen Sie diese durch ein Semikolon getrennt hintereinander. Der komplette Aufruf lautet also:

sleep 10; import -window roo↩
t desktop.jpg

Umwandlungskünstler Convert

Der Name ist Programm: Das Tool konvertiert zwischen verschiedenen Bildformaten, verändert die Größe, beschriftet Ihre Bilder und kann sogar aus Grafiken PostScript-Dateien erstellen. Um aus einer Bitmap-Datei ein JPEG zu erstellen, reicht der Aufruf convert bild.bmp bild.jpg.

Anhand der Dateiendung erkennt das Programm wieder, in welches Format Sie umwandeln wollen; das Original bleibt zusätzlich zur neuen Datei enthalten. Möchten Sie der neuen JPEG-Datei eine andere Endung verpassen, verraten Sie Convert einfach, welches Zielformat sie wünschen: convert bild.bmp JPEG:bild.neu.

Da Convert auch ins PostScript-Format umwandelt, drucken Sie auf diese Weise schnell über die Kommandozeile Fotos aus. Geben Sie als zusätzliche Optionen die Papiergröße (Beispiel: -page A4) und eventuell die Position des Bildes an, etwa +0+0 für die obere linke Ecke. Besitzen Sie keinen Farbdrucker, bietet sich darüber hinaus die Option -monochrome an, um die Ausgabe nach Schwarz-Weiß umzuwandeln:

convert -page A4+0+0 -monoch↩
rome bild.jpg bild.ps

Das fertige PostScript-Dokument (Abbildung 1) schicken Sie anschließend an den Drucker. Noch schneller geht's, wenn Sie die entsprechenden Befehle miteinander kombinieren und den Output nicht in eine Datei umleiten, sondern über eine Pipe direkt an das Kommando lpr übergeben.

Als Namen der Ausgabedatei wählen Sie dabei den einfachen Bindestrich "-", den viele Programme als Standardein- oder -ausgabe interpretieren. Da dieser Dateiname nicht die korrekte Endung .ps für eine PostScript-Datei hat, geben Sie Convert einen Hinweis auf das gewünschte Zielformat, indem Sie dem "-" die PostScript-Kennung ps: voranstellen:

convert -page A4+0+0 -monoch↩
rome bild.jpg ps:- | lpr
Abbildung 1: Mit Convert wandeln Sie Ihre Farbfotos in schwarz-weiße PostScript-Dokumente um.

Geschnitten oder am Stück?

Besonders praktisch ist der Einsatz von Convert, wenn Sie schnell Thumbnails von Ihren Fotos erstellen wollen. Zusammen mit der Option -resize (-geometry erledigt in diesem Fall dasselbe) und der Angabe der neuen Größe schrumpfen Sie Ihre Bilder zurecht. Dabei bleiben standardmäßig beim Skalieren die Proportionen erhalten, das Seitenverhältnis ändert sich also nicht. Wenn Sie also

convert -resize 200x200 bild↩
.jpg bild_thumb.jpg

auf ein 1074x768 Pixel großes Bild loslassen, passt convert das Seitenverhältnis automatisch an und skaliert auf 200x150 Pixel. Soll das Foto auf jeden Fall auf 200x200 Pixel gebracht werden (um den Preis, dass das Bild verzerrt), setzen Sie ein Ausrufezeichen hinter die Größenangabe:

convert -resize 200x200! bil↩
d.jpg bild_thumb.jpg

Alternativ versteht die Option -resize auch Prozentangaben statt der genauen Pixelzahl. So erstellt das folgende Kommando einen Thumbnail von 10 Prozent der Originalgröße:

convert -resize 10% bild.jpg↩
 bild_thumb.jpg

Sollen gleich mehrere Bilder eines Verzeichnisses auf Daumennagelgröße gebracht werden, sparen Sie viel Tipperei, wenn Sie mit einer for-Schleife auf der Kommandozeile zaubern:

for i in *.jpg; do convert -↩
resize 20% $i `basename $i .jpg`↩
_thumb.jpg; done

Dabei weist die Software jede Datei mit der Endung .jpg der Variablen i zugewiesen und ruft für diese anschließend convert -resize 20% auf. Der erste Parameter ist die Ausgangsdatei ($i), der zweite die Ausgabedatei, gebildet aus dem "Basisnamen" ohne die Endung, dem String _thumb und wiederum der Endung .jpg.

Richtig montiert

Haben Sie mit der Digitalkamera viele einzelne Bilder geschossen und wollen diese zu einer Art Panorama zusammensetzen, hilft das Programm Montage weiter. Um einfach alle JPEGs eines Verzeichnisses zu einer großen Kachel zusammenzusetzen, tippen Sie:

montage *.jpg panorama.jpg

Als letztes Argument geben Sie den Namen des neuen Bildes an. Wie viele Grafiken in der neu entstandenen Montage in einer Reihe nebeneinander stehen, definieren Sie über den Parameter -tile (Default sind drei Bilder pro Reihe).

Auch andere Parameter, die bei den restlichen ImageMagick-Programmen zum Einsatz kommen – wie -resize, -size oder -shadow – sorgen beim Montage-Tool für das richtige Format. Parameter wie -geometry, erfüllen Spezialfunktionen: Zusammen mit Montage eingesetzt, sorgt -geometry für die Größe der einzelnen Kacheln (standardmäßig haben diese die Größe 256x256 Pixel) und nicht des Gesamtbildes.

Tipp

Um die Gesamtgröße eines gekachelten Bildes zu beeinflussen, verwenden Sie einfach die Option -resize.

Um drei Photos ohne Rahmen, Abgrenzungen und in ihrer Originalgröße nebeneinander anzuordnen, tippen Sie:

montage +frame +shadow +labe↩
l -geometry 100% haehne.jpg hueh↩
ner.jpg schafe.jpg montage.jpg

Das fertige Ergebnis zeigt Abbildung 2.

Abbildung 2: Mit dem Programm Montage kleben Sie mehrere Fotos zu einem Panorama aneinander.

Mit Montage oder alternativ mit Convert erstellen Sie ebenfalls so genannte Visual Directories. Diese zeigen Thumbnails aller Bilder und Informationen zum Namen und der Größe an, die Sie dann jeweils einzeln zum Betrachten auswählen. Mit Montage erstellen Sie ein solches Visual Directory beispielsweise mit dem Befehl:

montage *.jpg dir.vid

Das entsprechende Convert-Kommando lautet:

convert 'vid .jpg' dir.vid

Die so entstandene Datei dir.vid öffnen Sie beispielsweise mit ImageMagicks eigenem Bildbetrachter (display dir.vid). Anschließend klicken Sie mit der rechten Maustaste auf die verkleinerten Darstellungen der Bilder und wählen aus dem Kontextmenü Load, um das jeweilige Foto zu betrachten.

Schrift einsetzen

Das Programm Convert bietet einige Parameter an, die beim Beschriften Ihrer Bilder helfen. So lassen sich beispielsweise mit wenigen Handgriffen sämtliche Fotos mit einem Wasserzeichen versehen. Die Option -font erwartet als Argument eine Schriftart, beispielsweise TrueType (Dateiendung .ttf).

Mit einem kleinen Trick finden Sie auf der Kommandozeile heraus, welche Schriftarten auf Ihrem System installiert sind. Der Befehl locate *.ttf | less durchforstet das System nach Dateien mit der Endung .ttf und listet diese seitenweise auf. Die so gefundenen Schriftarten verwenden Sie entweder direkt über den Dateinamen mit der vollen Pfadangabe:

-font @/usr/share/fonts/true↩
type/Times_New_Roman.ttf

Altrnative reicht einfach der Name: -font Arial. Die Schriftgröße bestimmen Sie über den Parameter -pointsize, und die Farbe des Wasserzeichens definieren Sie mit der Option -fill. Als Argument geben Sie für letztere entweder einen Namen (blue, white usw.), die RGB-Werte in Hexadezimal- oder Dezimalform an.

Tipp

Das Kommando convert -list color | less zeigt Ihnen eine Liste aller Farben an, die das Programm versteht. Damit die Anzeige nicht aus dem Fenster herausläuft, leiten Sie die Ausgabe wiederum an den Pager Less weiter.

Um den Text entsprechend zu platzieren, brauchen Sie weiterhin noch den Parameter -draw. Diesem teilen Sie darüber hinaus noch mit, was gezeichnet werden soll (in diesem Fall Text) und an welcher Stelle der Text im Bild auftaucht. So sorgt der Aufruf

convert -font Arial -pointsi↩
ze 20 -fill gray -draw "text 800↩
,750 'Copyright by Petronella'" ↩
bild.jpg bild_font.jpg

dafür, dass mit der TrueType-Schrift Arial in 20 Punkt, grau der Text "Copyright by Petronella" (achten Sie auf den Einsatz der Hochkommas, damit die Shell den Parameter nicht auswertet) erscheint. Der Text ist positioniert durch die Angabe 800,750 (ausgehend von der linken oberen Ecke 0,0), also 800 Pixel nach rechts und 750 nach unten. Das beschriftete Bild heißt huehner_font.jpg und ist in Abbildung 3 zu sehen.

Abbildung 3: Mit Convert schreiben Sie in Windeseile Wasserzeichen auf Ihre Fotos.

Der richtige Rahmen

Das Programm Convert bringt weiterhin einige Optionen mit, die Ihre Bilder einrahmen. Der Parameter -mattecolor ist dabei für die Farbe zuständig. Ebenso wie für die Option -fill geben Sie als Argument einen Namen oder die RGB-Werte in Hexadezimal-/Dezimalform an: convert -mattecolor "#6EBBFF".

Achten Sie auf die Anführungszeichen um den Farbwert herum, da die Bash sonst das Rautezeichen auswertet. Als zusätzlichen Parameter definieren Sie die Stärke des Rahmens in Pixeln. Um eine 10 Pixel breite Kante oben und unten um das Bild herumzuzaubern, tippen Sie beispielsweise:

convert -mattecolor "#6EBBFF↩
" -frame 10x10 bild.jpg neu.jpg

Denselben Effekt erzielen Sie mit den Parametern -border 10x10 und für die Farbe -bordercolor "#6EBBFF"; das gerahmte Foto sehen Sie in Abbildung 4.

Abbildung 4: Rahmen Sie Ihre Fotos doch einmal ein.

Spaß mit Filtern

Durch den Einsatz von Filtern erzielen Sie lustige und interessante Effekte: Mit convert -blur faktor machen Sie das Bild unschärfer, mit -sharpen schärfer. Lassen Sie beispielsweise convert -charcoal auf ein Foto los, sieht das Bild anschließend wie eine Kohlezeichnung aus. Abhängig vom Faktor, den Sie als Argument anhängen, zeichnet das Tool mit einem dickeren oder dünneren Kohlestift:

convert -charcoal 1 bild.jpg↩
 bild_c.jpg

Einen Negativeffekt erreichen Sie, wenn Sie -solarize auf Bilder anwenden. Auch dieser Parameter braucht als weiteres Argument die Angabe, wie stark der Effekt sein soll, beispielsweise -solarize 50; mögliche Werte liegen zwischen 1 und 100. Die Manpage zu convert listet noch viel mehr Effekte und Filter auf und zeigt auch Anwendungsbeispiele. In Abbildung 5 sehen Sie eine Zusammenstellung einiger Filter, und was damit möglich ist.

Abbildung 5: Dank zahlreicher Filter erzielen Sie spannende Effekte für Ihre Fotos.

Nur fauler Zauber?

Im Gegenteil – für viele Aufgaben sind die ImageMagick-Tools prima geeignet, und ein grafisches Programm wie Gimp schießt eben doch oft mit Kanonen auf Spatzen. Darüber kombinieren Sie die Befehle mit anderen Kommandozeilen-Tools und reizen so alle Vorzüge der Shell aus, um oft wiederkehrende Aufgaben zu automatisieren.

Infos

[1] ImageMagick-Website: http://www.imagemagick.org/

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Related content

Kommentare