Auf Kommando animiert
Netpbm-Tools und Shell-Skripte
Effekte animieren
Neben GIF gibt es weniger patentbelastete Animationsformate wie MPEG und FLI. xanim zeigt auch letzteres an. Für die mkedge-Animation aus Listing 3 brauchen wir ppm2fli, das nicht Teil der Netpbm-Tools ist.
Listing 3
mkedge
#!/bin/bash
for f in glass??.ppm
do
ppmtopgm $i | pgmedge | pgmnorm > ${i%.ppm}.pgm
done
ls glass??.pgm > frames.list
ppm2fli -g240x180 frames.list edge_anim.fli
Das Skript durchläuft wiederum alle Einzelbilder der Glaskugel-Sequenz, wandelt sie in Graustufen (ppmtopgm), erzeugt eine Liniendarstellung der Kanten im Bild (pgmedge) und normiert die Helligkeitsverteilung (pgmnorm). Die Ergebnisbilder erhalten die Dateinamen glass00.pgm bis glass49.pgm. Da ppm2fli die Liste der Einzelbilder in einer Datei erwartet, muss das ls-Kommando diese Liste zunächst erzeugen, bevor der eigentliche ppm2fli-Lauf starten kann. Auch die Abmessungen der Bilder müssen Sie dem Tool durch die Option -g mitteilen.
Für die Erzeugung einer weiteren Animation verwenden wir das Tool ffmpeg, das – wie der Name vermuten lässt – MPEG-Animationen schreiben kann. Als Filterkette kommt zunächst die gleiche wie in mkedge zum Einsatz, jedoch addiert ein weiterer Schritt das Originalbild glass00.ppm pixelweise dazu (pnmarith). So entsteht ein interessanter Overlay-Effekt. Beim Aufruf von ffmpeg in mkedge (Listing 4) wird das Muster für die Eingabedateien (glass%02d.overlay.ppm) nicht von der Shell expandiert, sondern von ffmpeg selbst.
Listing 4
mkoverlay
#!/bin/sh
for i in glass??.ppm
do
ppmtopgm $i | pgmedge | pgmnorm > temp.ppm
pnmarith -add temp.ppm glass00.ppm > ${i%.ppm}.overlay.ppm
done
ffmpeg -an -i glass%02d.overlay.ppm -b 768 g_overlay.mpg
Die gesamte Filter-Vielfalt der Netpbm-Tools ergründen Sie am besten durch Ausprobieren und Lesen der Manpages. Eine Übersicht finden Sie in denen zu pbm, pgm, ppm und pnm. Damit bleibt nur noch die Aufforderung: Experimentieren Sie!
Glossar
Sourceforge
Ein unter http://sourceforge.net/ zu findender Web-Dienst, der viele Open-Source-Projekte beheimatet [1]. Entwicklerforen, Versionsverwaltung, Downloadbereiche und vieles mehr stellt er zur Verfügung.
Povray
Ein frei kopierbares Raytracing-(3D-Grafik)-Programm, das auf vielen Betriebssystemen zu Hause ist – so auch auf Linux. Seine Homepage finden Sie unter http://www.povray.org/; die Heft-CD enthält ein Tutorial in HTML-Form.
Anti-Aliasing
Automatische Kantenglättung bei hohen Kontrasten. So erscheint die Grafik weniger "verpixelt", es wird eine höhere Auflösung vorgegaukelt.
Standardeingabe
Bei vielen Kommandozeilenprogrammen gibt es die Möglichkeit, den Namen der Eingabedatei wegzulassen. In diesem Fall liest das Programm von der Standardeingabe, die normalerweise mit der Tastatur verbunden ist. Wird der Name der Ausgabedatei weggelassen, geben viele Programme auf der Standardausgabe aus, also sichtbar aufs Terminal.
Standardausgabe
Bei vielen Kommandozeilenprogrammen gibt es die Möglichkeit, den Namen der Eingabedatei wegzulassen. In diesem Fall liest das Programm von der Standardeingabe, die normalerweise mit der Tastatur verbunden ist. Wird der Name der Ausgabedatei weggelassen, geben viele Programme auf der Standardausgabe aus, also sichtbar aufs Terminal.
Pipes
Das Pipezeichen "|" (steht für eine stilisierte Rohrleitung) verbindet die Standardausgabe eines Programms mit der Standardeingabe eines anderen. So lassen sich mehrere Programme zu einem Verarbeitungsschritt zusammen fassen.
Shell-Skripte
Eine Datei mit Shell-Kommandos, die automatisch abgearbeitet werden. Häufig wiederkehrende Arbeitsschritte lassen sich durch Shell-Skripte gut automatisieren.
Infos
[1] Andreas Bauer: "Sourceforge & Co.", LinuxUser 02/2002, S. 39 ff.



