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

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

War doch klar...
(243 Punkte bei 15 Stimmen)
Re: War doch klar...
(179 Punkte bei 5 Stimmen)
Re: Skype für 64-Bit-Prozessor u. Suse 12.1
(161 Punkte bei 4 Stimmen)
Kubuntu verliert Finanzierung
(130 Punkte bei 4 Stimmen)
Offen fürs Geschäft
(80 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

562 Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 03/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

Duden Korrektor unter 64-Bit
Duden Korrektor unter 64-Bit
Tim Schürmann, 06.02.2012 10:36, 0 Kommentare

Der Duden Korrektor bietet eine äußerst nützliche Rechtschreib- und Grammatikkorrektur für LibreOffice und bringt in der aktuellen Version 8 e...

Aktuelle Fragen

N24 Stick (Huawei E173) und Ubuntu 11.04
Patrick Obenauer, 11.02.2012 11:54, 1 Antworten
Hallo zusammen! Ich benutze einen alten Laptop, der mit Ubuntu 11.04 flott und problemlos läuft....
Wie kann man beim Einsatz von Compiz die Fenster-Dekoration einstellen?
GoaSkin , 10.02.2012 20:12, 0 Antworten
Hallo, ich nutze Linux Mint mit dem Gnome-Derivat Mate. Da die Distribution Compiz nicht autom...
rndc reload zone - failed bad zone
Ludwig jun. B., 06.02.2012 16:08, 2 Antworten
Schönen guten Tag, ich habe folgendes Problem. Immer wenn ich folgendes Kommando ausführen bek...
Skype für 64-Bit-Prozessor u. Suse 12.1
Klaus Sigerist, 05.02.2012 11:39, 3 Antworten
Hallo Gemeinde! Ich bin nur ein einfacher Nutzer und habe Probleme mit der Installation von Skyp...
8! Anfängerfrage :) Wie finde ich in Ubuntu die Datenträger (Bild, Text)
samuel leusam, 04.02.2012 15:53, 2 Antworten
Ich habe neu Ubuntu. Wenn ich die SD Karte im Laptop einstecke, erkennt er sie und gibt ihr den N...