home *** CD-ROM | disk | FTP | other *** search
- Struktur der DK8JV-FAX Bilddatendateien.
- ========================================
-
- Jede Bilddatendatei besteht aus einem Header und der eigentlichen
- Bildinformation, welche zeilenweise komprimiert abgespeichert ist.
-
- Der Header hat folgenden Aufbau:
-
- Zuerst kommt eine Zeile Text mit einer maximalen Länge von 80 Zeichen,
- abgeschlossen mit CR, LF, EOF. (0Dh,0Ah,1Ah)
- Dabei muss der Text mit der Zeichensequenz JVGRAPH-FAX beginnen, da die
- Datei ansonsten von SHOWPIC nicht als Bilddatenfile akzeptiert wird.
- Der weitere Inhalt dieser Textzeile ist ohne besondere Bedeutung.
-
- Hinter der EOF-Marke folgt die eigentliche Headerinformation mit folgendem
- Aufbau:
-
- 1) Wort ..... Anzahl Bildpunkte pro (unkomprimierte) Bildzeile
-
- 2) Wort ..... Modul (z.B. 576, 288 etc...)
-
- 3) Wort ..... Trommeldrehzahl, in der das Bild empfangen wurde (LPM)
-
- 4) Byte ..... Bit 0 = 1: Bild wurde in Grau=ein empgangen,
- Bit 0 = 0: Bild wurde in Grau=aus empfangen.
- Bit 1 = 1: Bild wurde mit 64 Graustufen empfangen,(ab FAX3.0)
- Bit 1 = 0: Bild wurde mit 16 Graustufen empfangen.( " )
- Bit 2 = 0: Bilddatendatei Vers. 2.5 Format (bis FAX3.1)
- Bit 2 = 1: Bilddatendatei Vers. 3.3 Format (ab FAX3.3)
-
- 5) Byte ..... Bit 0 = 1: Bild wurde Right to Left empfangen,
- Bit 0 = 0: Bild wurde Left to Right empfangen,
- Bit 1 = 1: Bild wurde Bottom to Top empfangen,
- Bit 1 = 0: Bild wurde Top to Bottom empfangen.
-
- 6) Byte ..... Bit 0 = 1: Bild wurde in horizontaler Darstellung empfangen,
- Bit 0 = 0: Bild wurde in vertikaler Darstellung empfangen.
-
- 7) Byte ..... Bit 0 = 1: Bild wurde als reine Schwarzweissdarstellung
- abgespeichert,
- Bit 0 = 0: Bild wurde entsprechend dem Flag Grau ein/aus
- abgespeichert.
- (Dieses Byte ist eigentlich redundant)
-
-
- (Ich fange bei den Bits eines Bytes mit 0 (=LSB) an zu zählen)
-
- An diesen Header schließt sich die eigentliche zeilenweise gepackte Bild-
- information an. Jede Zeile kann also eine unterschiedliche Länge in der Bild-
- datendatei einnehmen und hat folgenden Aufbau:
-
-
- Bis zur Vers. 2.5 der Bilddatendateien gilt folgendes:
-
- 1) Wort ..... Länge der Zeile in der Bilddatendatei in Bytes oder aber
- FFFFh für Datenende (=Dateiende)
- Durch die eingefügte Längeninformation kann man schneller
- uninteressante Bildabschnitte überspringen, ohne die Zeilen
- entkomprimieren zu müssen. (z.B. bei Zoom)
-
-
-
- Die darauffolgenden Bytes sind wie folgt zu interpretieren:
-
-
- Wiederhole
-
- lies ein Byte,
-
- Falls Bit 7 = 1, dann
- Beginne
- Falls Bit 6 = 0, dann
- wiederhole das darauffolgende Byte (Flagbyte and 3Fh) mal.
- sonst
- wiederhole übernächstes Byte (256*(Flagbyte and 3Fh)+nächstes Byte) mal.
- Ende, ansonsten
- übernimm die nächsten Flagbyte Bytes unverändert.
-
- Bis alle Bytes der Zeile gelesen sind.
-
-
- Beispiel:
-
- eine Zeile (HEX):
-
- 0011 85 00 C1 01 FF 09 FE FF 1F 7F FF AA FF FC FD 84 0F
-
- (Länge 17 Bytes, das Längenwort wird nicht gezählt))
- ergibt entpackt:
-
- 5 * 00 257 * FF FE FF 1F 7F FF AA FF FC FD 4 * 0F
-
- (macht 275 Bytes)
-
-
- Wenn man so sukzessive einen Puffer vollschreibt, so hat man in ihm schliess-
- lich die entkomprimierte Zeile stehen.
-
- Falls ein Bild in Graudarstellung abgespeichert worden ist, stehen jetzt in
- jedem Byte 2 Bildpunkte à 4 Bit, zuerst Low-, dann High-Nibble, oder aber im
- Falle von Bildern mit 64 Graustufen ein Bildpunkt pro Byte.
- Bei Schwarzweiss abgespeicherten Bildern stehen 8 Bildpunkte in jedem Byte,
- wobei das LSB zuerst kommt, und zuletzt das MSB.
-
-
- Ab der Version 3.3 der Bilddatendateien wird ein verbessertes
- Kompressionsverfahren verwendet. Es handelt sich wieder um ein Lauflängen-
- verfahren, allerdings wird jede Lauflänge in einem Byte untergebracht, und
- bei Graudarstellungen wird zeilenweise jeweils ein Wertigkeitsbit gepackt.
-
- Zunächst für Schwarzweiss:
-
-
- 1) Wort ..... Länge der Zeile in der Bilddatendatei in Bytes oder aber
- FFFFh für Datenende (=Dateiende)
- Durch die eingefügte Längeninformation kann man schneller
- uninteressante Bildabschnitte überspringen, ohne die Zeilen
- entkomprimieren zu müssen. (z.B. bei Zoom)
-
-
- Die darauffolgenden Bytes sind wie folgt zu interpretieren:
-
-
- Bit: 76543210
-
- X0YYYYYY entspricht YYYYYY Bildpunkten mit Wert X (X=0: Schwarz)
-
- X10YYYYY entspricht 64*YYYYY Bildpunkten mit Wert X (X=0: Schwarz)
-
- X11YZUVW entspricht 6 Bildpunkten mit Werten X, Y, Z, U, V, W.
-
- Beispiel:
-
- die Bytes
-
- 10001111 01000010 11110110 entsprechen
-
- 16 Bildpunkten Weiß, 128 Bildpunkten Schwarz und den Bildpunkten
- Weiß, Schwarz, Weiß, Weiß, Schwarz.
-
-
- Bei Graudarstellung sind zunächst in einer Bilddatenzeile die MSBs der
- Bildzeile gepackt, dann in der nächsten Zeile die zweithöchstwertigen Bits
- und so fort bis zu den LSBs.
- D.h. bei 4-Bit Grauwertdarstellung machen 6 Bilddatenzeilen eine Bildzeile;
- bei 6-Bit Graudarstellung besteht eine Bildzeile aus 6 Bilddatenzeilen.
- Obwohl dieses Kompressionsverfahren denkbar primitiv ist, fallen die Dateien
- im Schnitt um 30% kleiner aus als die mit Vers. 2.5 komprimierten.
-
- Mit dieser Information dürfte es nicht schwierig sein, eigene Programme zum
- Weiterverarbeiten bzw. Umformatieren der Bilddatendateien zu schreiben.
-