看一下 PNG规范,可以看到PNG像素数据块以
IDAT
开始,以 IEND
结束(稍微更清晰的解释在这里)。中间有些值对我来说没有意义。
如何从中得到可用的RGB值,而不使用任何库(即从原始二进制文件中)?
作为示例,我在Photoshop中制作了一个2x2px的图像,其中有4个黑色rgb(0,0,0)
像素:
以下是生成的数据(原始二进制输入中的十六进制值和可读的ASCII码表示):
BINARY HEX ASCII
01001001 49 'I'
01000100 44 'D'
01000001 41 'A'
01010100 54 'T'
01111000 78 'x'
11011010 DA '\xda'
01100010 62 'b'
01100000 60 '`'
01000000 40 '@'
00000110 06 '\x06'
00000000 00 '\x00'
00000000 00 '\x00'
00000000 00 '\x00'
00000000 00 '\x00'
11111111 FF '\xff'
11111111 FF '\xff'
00000011 03 '\x03'
00000000 00 '\x00'
00000000 00 '\x00'
00001110 0E '\x0e'
00000000 00 '\x00'
00000001 01 '\x01'
10000011 83 '\x83'
11010100 D4 '\xd4'
11101100 EC '\xec'
10001110 8E '\x8e'
00000000 00 '\x00'
00000000 00 '\x00'
00000000 00 '\x00'
00000000 00 '\x00'
01001001 49 'I'
01000101 45 'E'
01001110 4E 'N'
01000100 44 'D'