Глядя на PNG specification, кажется, что блок данных пикселя PNG начинается с IDAT
и заканчивается IEND
(немного более ясное объяснение here). В середине есть значения, которые не имеют смысла иметь смысл для меня.Интерпретировать данные пикселя PNG
Как я могу получить полезные значения RGB из этого, без использования каких-либо библиотек (т.е. из необработанного двоичного файла)?
В качестве примера, я сделал 2x2px изображение с 4 черными rgb(0,0,0)
пикселями в Photoshop:
Вот полученные данные (в сыром двоичном входе, значения шестигранных и читаемый 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'
Очень, очень полезно - спасибо! – JeffThompson