Klaus Junge: zu GIF-Dateiformat

Beitrag lesen

Hallo,

hab' noch angefangen eine Gegenprobe zu machen.
Dazu habe ich mein Testbild gespiegelt und als
GIF89a gespeichert.

--------
47 49 46   GIF
38 39 61   89a
--------   Screen Descriptor
10 00      Screen Width
02 00      Screen Height
B3         Flags
00         Background Color Index
00
--------   Global Color Map
00 00 00
BF 00 00
00 BF 00
BF BF 00
00 00 BF
BF 00 BF
00 BF BF
C0 C0 C0
80 80 80
FF 00 00
00 FF 00
FF FF 00
00 00 FF
FF 00 FF
00 FF FF
FF FF FF
--------   Image Descriptor
2C         Image Separator Character
00 00      Image Left
00 00      Image Top
10 00      Image Width
02 00      Image Height
00         Flags
--------   Raster Data Block
04         Code Size
12         Block Byte Count
F0 B9 C6
96 4A E8  
98 42 86  
08 80 44  
59 98 C6  
79 60 04
00         Block Terminator
--------
3B         GIF Terminator  
--------

Es sieht ziemlich ähnlich aus.
Die Global Color Map ist identisch.
Der Extension Block ist hier nicht vorhanden!
Die Daten unterscheiden sich natürlich.

Encoded Raster Data Block
F0 B9 C6 96 4A E8 98 42 86 08 80 44 59 98 C6 79 60 04

Unencoded Raster Data
0F 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00
0F 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00

Die Starttabelle bleibt wie von Jörk aufgestellt.
Den praktischen Nährwert der Spiegelung hab'
ich jedoch noch nicht recht erfasst. :-(

#0 - 00000    
  #1 - 10000    
  #2 - 01000    
  #3 - 11000    
  #4 - 00100    
  #5 - 10100    
  #6 - 01100    
  #7 - 11100    
  #8 - 00010    
  #9 - 10010    
  #A - 01010    
  #B - 11010    
  #C - 00110    
  #D - 10110    
  #E - 01110    
  #F - 11110    
<CC> - 00001    
<EOI>- 10001

Erstmal die erste Hälfte:

<CC>  0F    0E    0D    0C    0B    0A    09    08    07    06    05    04    03    02    01    00

Fünfergruppen:
00001 11110 01110 10110 00110 11010 01010 10010 00010 11100 01100 10100 00100 11000 01000 10000 00000

Achtergruppen:
00001111 10011101 01100011 01101001 01010010 00010111 00011001 01000010 01100001 00010000 00000

Gespiegelt und dann in hex:
11110000 10111001 11000110 10010110 01001010 11101000 10011000 01000010 10000110 00001000
F   0    B   9    C   6    9   6    4   A    E   8    9   8    4   2    8   6    0   8

Sollmuster (erste Hälfte laut PSP):
F0 B9 C6 96 4A E8 98 42 86 08...

Yeah Jörk es klappt!!!
Der Rest wird es ja wohl auch noch tun.
Aber, es geht ja zu wie beim Krabbenpulen,
drücken, drehen und abziehen, und dann nochmal...
Wohler wäre mir schon wenn ich das kapieren könnte.

Eigentlich sollte es ja auch funktionieren wenn die
Starttabelle bzw. String Table richtigrum angelegt
wird und dann, wenn es ans Ausgeben des Musters geht,
die Bits vom Niederwertigsten an achterweise abgezählt
und rausgeschoben werden. Der Rest muß dann aufgehoben
werden und ... 2 + 5 = 7 + 1 = 8 ... elende Packerei.

Da wird also auch noch Knobelei nötig werden um diese
Bitakrobatik einigermaßen sauber hinzukriegen.

Außerdem wird es noch eine Rolle spielen wie das ganze
dann in die Blöcke gepackt wird.

Klaus