我一直在尝试在 PHP 中解压缩 GIF,似乎除了 LZW 解压缩之外的所有东西都已完成。我保存了显示的图像:
此图像是 3 x 5,如下所示:
Blue Black Black
Black Blue Black
Black Black Black
White White White
White White White
我决定在 Binary 中手动完成并解析这个文件。手动解析的结果如下。我仍然对如何在这里解码栅格数据感到困惑。有人可以分解栅格数据如何成为图像吗?我已经能够分解一张图片,但没有别的(不是这张图片)。我已经发表了我对这应该如何分解的理解,但我显然做错了。
01000111 G
01001001 I
01000110 F
00111000 8
00111001 9
01100001 a
Screen Descriptor
WIDTH
00000011 3
00000000
00000101 5
00000000
10010001 GCM (1), CR (001), BPP (001), CD = 2, COLORS = 4
00000000 BGCOLOR Index
00000000 Aspect Ratio
GCM
BLUE
00110101 | 53
00000000 | 0
11000001 | 193
WHITE
11111111 | 255
11111111 | 255
11111111 | 255
BLACK
00000000 | 0
00000000 | 0
00000000 | 0
00000000 | 0
00000000 | 0
00000000 | 0
Extension
00100001 | 21
Function Code
11111001 | F9
Length
00000100 | 4
00000000
00000000
00000000
00000000
Terminator
00000000
Local Descriptor
00101100 Header
XPOS
00000000 | 0
00000000
YPOS
00000000 | 0
00000000
Width
00000011 | 3
00000000
Height
00000101 | 5
00000000
Flags
00000000 (LCM = 0, Interlaced = 0, Sorted = 0, Reserved = 0, Pixel Bits = 0)
RASTER DATA
Initial Code Size
00000010 | 2
Length
00000101 | 5
Data
10000100
01101110
00100111
11000001
01011101
Terminator
00000000
00111011 | ;
00000000
我的尝试
10000100
01101110
00100111
11000001
01011101
初始代码大小 = 3 一次读取 2 位
10
00
Append last bit to first (010)
String becomes 010 or 2. 2 would be color # 3 or BLACK
在这一点上,我已经错了。第一种颜色应该是蓝色。
我一直在使用的资源:
http://www.daubnet.com/en/file-format-gif http://en.wikipedia.org/wiki/Graphics_Interchange_Format http://www.w3.org/Graphics/GIF/spec-gif87.txt