|
Uni ZH Informatikdienste PostScript-Corner
1. Der image-Operator |
1. Der image-OperatorEin Bild wird grundsätzlich hexadezimal kodiert. Jeweils 8 Bits werden als hex. XX dargestellt. Beispiele:00 Bildpunkt mit Graustufe 0 (weiss) 5E Bildpunkt mit Graustufe 94 91 Bildpunkt mit Graustufe 145 F0 Bildpunkt mit Graustufe 240 FF Bildpunkt mit Graustufe 255 (schwarz)Im Beispiel werden 8 Bits verwendet, um einen Bildpunkt darzustellen. Dies bedeutet, dass wir 256 verschiedene Graustufen unterscheiden können.
Ein Beispiel: /W 463 def % Breite in Bildpunkten /H 648 def % Hoehe in BildpunktenDas ganze Bild besteht aus 463 mal 648 Bildpunkten.
/pstr W string def % String fuer Scan-Zeile
W H 8 % dimensions of data
[W 0 0 H neg 0 H] % mapping matrix
{currentfile pstr readhexstring pop}
image
% Operanden von image:
% Breite, Hoehe, Anzahl Bits pro Pixel,
% [Matrix], {Prozedur}
%
2727272727272327232727272727272327272727
2327272727272727272727272B27272727272727
2B272727272727272B2F2F2727272B2B2B2B2B2B
272727272B2B2B2B2B2F2F2B2B272B2B2B2B272B
2B272B2B2B272B2B2B2B27272B2727272B2B2B2B
2B2B2B2B2B2B2B2B2B2B2B2B2B2F2B2B2B2B2B2B
2B2B2B2F2F2B2F2F2F2F2F2F2F2F2F2F2B2F2F2F
2F2F372F2B2B2B2B2B2B2B27272B2B2B2B2B2B2B
...
Der Operator image
hat bei PostScript Level 1 die folgenden Operanden:
Breite in Pixel, Hoehe in Pixel, Anzahl Bits pro Pixel,
Matrix, Prozedur.
Der PostScript-Interpreter geht davon aus,
dass ein Bild sein eigenes Koordinatensystem hat.
Die Matrix besteht normalerweise aus den folgenden sechs Werten:
[ Breite 0 0 -Hoehe 0 Hoehe ].
Diese Matrix besagt, dass das Bild von oben nach unten abgetastet wurde.
Der Operator image
führt die Prozedur currentfile pstr readhexstring pop
wiederholt aus,
bis alle Bilddaten verfügbar sind.
readhexstring
liest eine
Scan-Zeile vom aktuellen File und speichert diese in die
Zeichenkette pstr.
2. Exkurs: Bilder aufrasternDie Raster-Technik wandelt die Bilder-Graustufen in Kombinationen von Bildpunkten um, die beim Endgerät nur schwarz oder weiss sein können. Die mathematische Beziehung zwischen Rasterdichte und Zahl der Graustufen ergibt sich wie folgt:Rasterdichte = Druckerauflösung over Quadratwurzel aus Zahl_der_GraustufenBei PostScript-Dokumenten werden die Graustufen erst zum Zeitpunkt des Druckens in Halbton-Tupfen (halftone dots) umgewandelt. Dies ist von Vorteil. Ein Bild mit Graustufen sieht nämlich entschieden besser aus, wenn der Standard-Raster (screen frequency) eines hochauflösenden Ausgabegerätes verwendet wird. Es kann sogar empfohlen werden, auf den Einsatz des PostScript-Operators setscreen zu verzichten.
Bei den Laserdruckern beträgt der Winkel des Punktrasters normalerweise 45 Grad und die Dichte des Punktrasters normalerweise 60 Linien/Zoll. Im Falle der Setzmaschinen ist die Rasterdichte auf 90 oder 120 Linien/Zoll voreingestellt. Achtung: Linien/Zoll und die Auflösung in Pixel/Zoll sind zwei verschiedene Paar Stiefel. 3. Der Operator colorimageDer Operator colorimage ist die logische Erweiterung des image-Operators und unterstützt Farbkomponenten (RGB oder CMYK) statt lediglich Graustufen. Syntax (für RGB):width height b/c matrix procRed procGreen procBlue true 3 colorimage
4. BildkomprimierungDie neuen Kompressionsmethoden können die Uebertragung von Farbbildern wesentlich beschleunigen. Der JPEG-Algorithmus (Joint Photographic Expert Group), der mit einem kontrollierten Informationsverlust verbunden ist, kann Bilddaten bis zum Faktor 50 verdichten. Die entsprechenden Filternamen heissen DCTEncode und DCTDecode. DCT steht für "discrete cosine transform". Der Aufruf geschieht mit "/DCTDecode filter". filter ist ein neuer Operator von Level 2, der beim Lesen und Schreiben einer Datei ausgeführt wird.
In einem PostScript-Programm
folgt auf DCTDecode gewöhnlich der Operator image.
Demgegenüber erfolgt die Komprimierung eines Farbbildes
meistens ausserhalb eines PostScript-Programms, so dass
also "/DCTEncode filter" kaum verwendet wird.
GOTO Gamma-Korrektur. |
|
Uni ZH | Informatikdienste | PostScript Last update: Tuesday, 02-Apr-2002 13:45:42 CEST by vo | |