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))
本文深入解析PNG图像格式的内部结构,详细介绍了PNG文件头、IHDR数据块的组成及各字段的意义,包括图像尺寸、颜色类型等关键信息,并提供Python代码示例用于CRC校验。
602

被折叠的 条评论
为什么被折叠?



