Home / LinuxUser / 2002 / 09 / Netpbm-Tools und Shell-Skripte

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Auf Kommando animiert

Netpbm-Tools und Shell-Skripte

01.09.2002 Grafikbearbeitung muss nicht zwangsläufig mit der Maus erfolgen. Mit den Filtern des Netpbm-Pakets und "Verwandten" lassen sich Arbeitsschritte per Shell-Skript automatisieren.

Pixelbasierte Grafikformate gab es schon vor Jahren zuhauf. Entsprechend oft wurden und werden passende Konvertierungsprogramme benötigt. Will man diese Aufgabe nach Unix-Art mit einzelnen Filterprogrammen für die Kommandozeile lösen, so müsste man für n Grafikformate genau (n-1)@L: *n Filter schreiben. Nimmt man stattdessen ein Zwischenformat hinzu, so braucht es nur noch n Filter, die von den verschiedenen Grafikformaten in das Zwischenformat konvertieren und weitere n, die vom Zwischenformat in die Grafikformate zurück wandeln.

Mit dieser Idee begann Jef Poskanzer 1989 seine Arbeit an den pbmtools. Bis 1994 kamen Schritt für Schritt neue Formate und Effektfilter für das Zwischenformat zur Sammlung dazu, die inzwischen unter dem Namen netpbm firmiert. Seit dem Jahr 2000 geht die Netpbm-Entwicklung wieder aktiv voran; das Projekt ist auf Sourceforge beheimatet.

Bit, Grey oder Pix?

Genaugenommen gibt es nicht nur eines, sondern drei Zwischenformate in Netpbm: "Portable Bitmap" (PBM), "Portable Greymap" (PGM) und "Portable Pixmap" (PPM). Das PBM-Format kennt nur gesetzte (schwarze) und nicht gesetzte (weiße) Pixel und kommt deshalb mit einem Bit pro Pixel aus. Das PGM-Format kann nur Graustufen speichern und verwendet dafür im Normalfall acht Bit pro Pixel (256 Graustufen). Das PPM-Format sieht 24 Bit pro Pixel vor (jeweils acht Bit für die Grundfarben Rot, Grün und Blau), was 16,7 Millionen Farben ("True Color") ergibt. Ist irgendeins der drei Zwischenformate gemeint, spricht man von "Portable Anymap" (PNM).

Filter, die von Fremdformaten ins Zwischenformat konvertieren, heißen etwa tgatoppm, giftopnm oder g3topbm. Für die umgekehrte Richtung sind zum Beispiel ppmtogif, pnmtotiff oder pnmtops zuständig. Dazu kommen Filter, die ausschließlich auf den Zwischenformaten arbeiten. So wandelt ppmtopgm in Graustufen um, pnmsmooth rechnet unscharf, und pgmnorm normiert Graustufen.

Quellmaterial

Für die Bildbearbeitung braucht es natürlich Ausgangsmaterial, das es kommandozeilengesteuert zu verwursten gilt. Auch die Erzeugung dieser Bilder kann der Rechner erledigen, und zwar mit dem freien Raytracer Povray. Die Szenenbeschreibungsdatei glass.pov aus Listing 1 veranlasst das Programm dazu, ein Bild mit fünf gläsernen Kugeln vor einem karierten Hintergrund zu berechnen. Mit der clock-Variable kann zusätzlich der Hintergrund für eine simple Animation bewegt werden.

Listing 1

glass.pov

// Glaskugel-Animation
// (C) 7/2002 Christian Perle (POVaddict) / LinuxUser
// Kamera
camera {
  location <0, 0, -10>
  direction <0, 0, 4>
  look_at <0, 0, 0>
}
// Beleuchtung
light_source { <10, 10, -10> color rgb<1, 1, 1> }
// Deklaration der Glaskugel
#declare GKugel = sphere {
  <0, 0, 0>, 0.5
  scale <1, 1, 0.5>
  finish { phong 0.7 reflection 0.1 refraction 1 ior 1.33 }
}
// Fuenf farbige Glaskugeln
object {
  GKugel
  translate <-1, -0.6, 0>
  pigment { rgbf<1, 0.7, 0.7, 0.7> }
}
object {
  GKugel
  translate <0, 0, 0>
  pigment { rgbf<.7, 1, .7, .7> }
}
object {
  GKugel
  translate <1, 0.6, 0>
  pigment { rgbf<0.7, 0.7, 1, 0.7> }
}
object {
  GKugel
  translate <1, -0.6, 0>
  pigment { rgbf<1, 0.7, 1, 0.7> }
}
object {
  GKugel
  translate <-1, 0.6, 0>
  pigment { rgbf<0.7, 1, 1, 0.7> }
}
// Schachbrettmuster im Hintergrund
plane {
  <0, 0, -1>, -4
  pigment {
    checker color rgb<0.5, 0.5, 0.5>, rgb<1, 1, 1>
    translate <-clock, -clock, 0>
    scale 0.4
  }
  finish { ambient 0.4 }
}

Diese Datei werfen wir Povray in der Version 3.0 oder 3.1. zum Fraß vor. Das Programm soll ein 320 mal 240 Pixel großes Bild erzeugen, Anti-Aliasing verwenden und praktischerweise gleich das PPM-Format zur Ausgabe verwenden:

povray +i glass.pov +w320 +h240 +a0.1 +fp +v

Abbildung 1 zeigt das Ergebnis, das in der Datei glass.ppm gespeichert ist.

Abbildung 1: Glaskugeln als Testbild

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

688 Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...