Aufmacher Artikel

Grafik ohne grafisches Frontend

Zu Befehl: Grafik-Tools aus ImageMagick

01.08.2004 Gimp ist das Standardprogramm, wenn es um anspruchsvolle Bildbearbeitung geht. Doch viele Aufgaben, wie Größenänderung und Formatkonvertierung, erledigen Sie auch schnell auf der Kommandozeile.

Wer an Bildbearbeitung denkt, stellt sich meist automatisch eine komplexe grafische Oberfläche mit vielen Paletten für Werkzeuge, Farbwahl etc. vor – doch es gibt viele Aufgaben, bei denen ein Programm wie der Klassiker Gimp ganz unangemessen ist.

Das Paket ImageMagick [1], das bei vielen Linux-Distributionen automatisch mitinstalliert wird, enthält viele Kommandozeilen-Tools zur Bildbearbeitung, von denen wir hier einige vorstellen.

Formatwechsel

Eine häufige Aufgabe ist das Konvertieren von Grafiken in ein anderes Bildformat, beispielsweise von TIF nach PNG. Dazu benutzen Sie das ImageMagick-Kommando convert:

convert bild.tif bild.png

convert erkennt an der Endung der Zieldatei selbständig, welches Zielformat es erzeugen soll – ob Sie die Endung in Groß- oder Kleinbuchstaben oder gar gemischt schreiben, spielt dabei keine Rolle. Selbst Varianten (z. B. .tiff statt .tif oder .Jpeg statt .jpg) sind für das Tool kein Problem. Über die zentrale ImageMagick-Manpage, die Sie mit

man ImageMagick

aufrufen, erhalten Sie eine Liste aller möglichen Dateiformate (Abbildung 1).

Abbildung 1

Abbildung 1: Dies ist nur die erste von mehreren Seiten der ImageMagick-Manpage, die Dateiformate auflisten.

Skripte

Ein großer Vorteil des Einsatzes von Shell-Tools ist ihre leichte "Skriptbarkeit", also die Möglichkeit, sie in Shell-Skripten zur Automatisierung einzusetzen.

Wollen Sie beispielsweise häufig einen farbigen Screenshot, den Sie als PNG-Datei erstellt haben, in eine schwarzweiße TIF-Datei und eine ebenso graue PDF-Datei konvertieren, können Sie dazu einfach das Skript color2gray aus Kasten 1 verwenden: Es wandelt nicht nur vom PNG-Format nach TIF und PDF, sondern reduziert auch gleich den Farbraum – dazu dienen die beiden Optionen -colors 256 und -colorspace GRAY.

Kasten 1: Skript "color2gray"

#!/bin/bash
# Schwarzweiß-TIF und -PDF erzeugen
#
base=$(echo $1 | sed -e "s/\….$//")    # Dateiendung abschneiden
baseBW=${base}.tif                       # Name für TIF-Datei
basePDF=${base}.pdf                      # Name für PDF-Datei
convert -colors 256 -colorspace \
        GRAY $1 $baseBW                  # Konvertieren nach TIF
convert $baseBW $basePDF                 # … und nach PDF
mkdir -p COLOR; mv $1 COLOR/             # Original verschieben

Nebenbei erledigt das Skript noch etwas Verwaltungsarbeit: Rufen Sie es beispielsweise mit

color2gray test.jpg

auf, erzeugt es test.tif und test.pdf und schiebt anschließend die Originaldatei in ein Unterverzeichnis COLOR – wenn dieses noch nicht existiert, wird es vorher angelegt.

Klein gemacht

Wenn Sie gelegentlich die LinuxUser-Web-Seite besuchen, ist Ihnen vielleicht aufgefallen, dass es zu jeder Ausgabe, die wir online stellen, drei Bilder der Titelseite in unterschiedlichen Größen gibt (Abbildung 2).

Abbildung 2

Abbildung 2: Auf der LinuxUser-Web-Seite verwenden wir drei unterschiedlich große Versionen der Titelgrafik.

Auch hier hilft convert: Über seine Option -geometry kann es beim Konvertieren auch gleich die Bildgröße ändern. Die gewünschte Zielgröße gibt man einfach im Format Breite x Höhe an, also z. B.

convert gross.png -geometry 150x200 klein.png

für ein kleines Bild mit bis zu 150 Pixeln in der Breite und 200 Pixeln in der Höhe. Soll convert exakt die angegebene Größe erreichen (und dazu notfalls das Bild auch verzerren), setzt man hinter die Größenangabe noch ein Ausrufezeichen:

convert gross.png -geometry 150x200! klein.png

Das Listing in Kasten 2 verwenden wir in der Redaktion, um die Titelgrafiken für die Web-Seite vorzubereiten. Hier ist die Angabe einer festen Größe (also mit "!") sinnvoll, da so alle Thumbnails die gleiche Größe erhalten und sich beispielsweise hübsch neben- und übereinander anordnen lassen.

Kasten 2: Skript "title-convert"

#!/bin/sh
echo converting title: $1 to $2 \(small\) and $3 \(very small\)
convert $1 -blur 3 -geometry 217x306! $2
convert $1 -blur 3 -geometry 149x211! $3

Neben der manuellen Verkleinerung von Grafiken bietet convert noch ein Spezial-Feature, das eine Übersicht aller Grafiken erzeugt: Geben Sie in einem Verzeichnis, das nur Bilder enthält, den Befehl

convert 'vid ' directory.png

ein, um eine Übersichtsgrafik wie in Abbildung 3 zu erstellen. Auf weißem Hintergrund sehen Sie unter kleinen Thumbnails jeweils den Dateinamen, die Auflösung und die Dateigröße.

Abbildung 3

Abbildung 3: Die von "convert" erstellte Übersichtsgrafik ist auch in einer "klickbaren" Version für Web-Seiten verfügbar.

Solche Grafiken können Sie später auch auf einer Web-Seite verwenden, wenn Sie mit Image-Maps arbeiten. Eine entsprechende Map erstellt convert auf Wunsch automatisch: Mit

convert 'vid ' HTML:index.html

erzeugen Sie drei Dateien, *

index.gif ist die Übersichtsgrafik. Den Dateinamen index.gif leitet convert automatisch aus dem Namen der HTML-Datei ab. *

index.html ist eine HTML-Datei, welche die GIF-Grafik einbindet und mit einer passenden Map-Definition ausstattet, so dass man per Klick auf eines der Vorschaubilder zum großen Bild weiter geleitet wird. *

index_map.shtml enthält nur den Abschnitt der Map-Definition aus index.html und eignet sich zum (Server-seitigen) Einbinden in mehrere Web-Seiten.

Kurzinfo

Sehr nützlich ist das Kommando identify, das ebenfalls zum ImageMagick-Paket gehört, aber oft übersehen wird: Es gibt Kurzinformationen zu allen übergebenen Dateien aus, darunter auch die Größe in Pixeln.

$ identify *.png *.jpg
manpage.png PNG 512x888 DirectClass 16-bit 37693b 0.1u 0:01
usertitel.png[1] PNG 1118x867 DirectClass 8-bit 304kb 0.1u 0:01
manpage_s.jpg[2] JPEG 185x320 DirectClass 8-bit 14114b 0.0u 0:01
usertitel_s.jpg[3] JPEG 320x248 DirectClass 8-bit 24810b 0.0u 0:01

Auch die Farbtiefe (im Beispiel: 8 oder 16 Bit) erfährt man auf diesem Weg. Dabei ist identify nicht darauf angewiesen, dass Dateien eine passende Endung haben – wenn Sie bei allen Grafiken die Endungen abschneiden, erkennt das Tool den Dateityp trotzdem zuverlässig. Die Größenangaben von identify sind (wie auch bei convert) immer in der Form Breite x Höhe.

Input & Output

Zwei weitere nützliche Tools sind import und display: Das erste Programm erstellt Screenshots, das zweite zeigt Bilder an. Für import gibt es verschiedene Optionen, die am häufigsten benutzten sind sicher:

import -window root desktop.png

um einen Screenshot des gesamten Desktops zu erzeugen, und

import -frame fenster.png

um ein einzelnes Fenster aufzunehmen. Die Option -frame ist nötig, da import ohne sie den Fensterrahmen abschneiden und nur den Inhalt aufnehmen würde.

Die import-Befehle startet man unter KDE beispielsweise bequem aus einem Schnellstarter ([Alt-F2]) und stellt ihnen noch ein sleep-Kommando voran:

sleep 3; import -window root desktop.png

Dadurch hat man dann noch ein wenig Gelegenheit, den Desktop in den gewünschten Zustand zu bringen, bevor es "blitzt" – bei Voll-Desktop-Aufnahmen können Sie auch Menüs öffnen und mit aufnehmen.

display ist schließlich ein einfacher Betrachter, der Bilder immer zunächst in voller Größe anzeigt. Reicht der Platz nicht aus, öffnet sich zusätzlich ein Vorschaufenster, über das Sie bequem Ausschnitte des Bilds wählen.

Fazit

Mit convert, identify, import und display haben wir nur wenige der ImageMagick-Tools vorgestellt und deren Features auch nur im Anriss behandelt – welche Programme noch zum Paket gehören, verrät auf RPM- bzw. Debian-basierten Distributionen einer der Befehle

rpm -qfl `which identify` | grep bin
dpkg -L ImageMagick | grep bin

– ein Blick in die Manpages der einzelnen Werkzeuge ist auf jeden Fall empfehlenswert.

Infos

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

Tip a friend    Druckansicht beenden Bookmark and Share
Kommentare