Category : Communication (modem) tools and utilities
Archive   : FAX40.ZIP
Filename : BILDFMT.DOC

 
Output of file : BILDFMT.DOC contained in archive : FAX40.ZIP
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.



  3 Responses to “Category : Communication (modem) tools and utilities
Archive   : FAX40.ZIP
Filename : BILDFMT.DOC

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/