图片格式的crc校验

png格式的图片,文件头是89 50 4e 47 0d 0a 1a 0a  00 00 00 0d 

IHDR

文件头数据块

第一块

域的名称

字节数

说明

Width

4 bytes

图像宽度,以像素为单位

Height

4 bytes

图像高度,以像素为单位

Bit depth

1 byte

图像深度: 
索引彩色图像:1248 
灰度图像:124816 
真彩色图像:816

ColorType

1 byte

颜色类型:
0:灰度图像, 124816 
2:真彩色图像,816 
3:索引彩色图像,1248 
4:带α通道数据的灰度图像,816 
6:带α通道数据的真彩色图像,816

Compression method

1 byte

压缩方法(LZ77派生算法)

Filter method

1 byte

滤波器方法

Interlace method

1 byte

隔行扫描方法:
0:非隔行扫描 
1 Adam7(Adam M. Costello开发的7遍隔行扫描方法)

 

第二行前四位是宽,接下来四位是高,0806是下边这个。后边的C1 D0 B3 D4 就是校验码。校验的范围从494844到000000

Bit depth

1 byte

图像深度: 
索引彩色图像:1248 
灰度图像:124816 
真彩色图像:816

ColorType

1 byte

颜色类型:
0:灰度图像, 124816 
2:真彩色图像,816 
3:索引彩色图像,1248 
4:带α通道数据的灰度图像,816 
6:带α通道数据的真彩色图像,816

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))

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值