png格式的图片,文件头是89 50 4e 47 0d 0a 1a 0a 00 00 00 0d
IHDR |
文件头数据块 |
否 |
否 |
第一块 |
||
域的名称 |
字节数 |
说明 |
||||
Width |
4 bytes |
图像宽度,以像素为单位 |
||||
Height |
4 bytes |
图像高度,以像素为单位 |
||||
Bit depth |
1 byte |
图像深度: |
||||
ColorType |
1 byte |
颜色类型: |
||||
Compression method |
1 byte |
压缩方法(LZ77派生算法) |
||||
Filter method |
1 byte |
滤波器方法 |
||||
Interlace method |
1 byte |
隔行扫描方法: |
第二行前四位是宽,接下来四位是高,0806是下边这个。后边的C1 D0 B3 D4 就是校验码。校验的范围从494844到000000
Bit depth |
1 byte |
图像深度: |
||||
ColorType |
1 byte |
颜色类型: |
crc校验的py2代码:
# -*- coding: utf-8 -*-
import binascii
import struct
crc32key = 0xC1D0B3E4
for i in range(0, 65535):
height = struct.pack('>i', i)
data = b'\x49\x48\x44\x52\x00\x00\x0C\xC0'+height+ b'\x08\x06\x00\x00\x00'
crc32result = binascii.crc32(data) & 0xffffffff
if crc32result == crc32key:
print ''.join(map(lambda c: "%02X" % ord(c), height))