Python3 PNG文件格式及根据CRC检验码修复图片高度
PNG文件头部格式如下:
- (固定)八个字节89 50 4E 47 0D 0A 1A 0A为png的文件头
- (固定)四个字节00 00 00 0D(即为十进制的13)代表数据块的长度为13
- (固定)四个字节49 48 44 52(即为ASCII码的IHDR)是文件头数据块的标示(IDCH)
- (可变)13字节数据块(IHDR)
- 前四个字节代表该图片的宽
- 后四个字节代表该图片的高
- 后五个字节依次为:
Bit depth、ColorType、Compression method、Filter method、Interlace method
- (可变)剩余四字节为该png的CRC检验码,由从IDCH到IHDR的十七字节进行crc计算得到。
若PNG文件宽度出现错误,我们可以根据CRC码对文件进行校验,还原出正确的图片宽度
下面是一个对宽度受损的图片根据CRC值进行宽度搜索的例子:
import struct
import binascii
import osfi=open('d21007e64ba84021875c3556ece71173.png','rb').read()#12-15字节代表固定的文件头数据块的标示,16-19字节代表宽度,20-23字节代表高度,24-28字节分别代表
# Bit depth、ColorType、Compression method、Filter method、Interlace method
#29-32字节为CRC校验和for i in range(10000):#宽度0-9999搜索data=fi[12:16]+struct.pack('>I',i)+fi[20:29] #pack函数将int转为bytes,>表示大端00 00 00 02,I表示4字节无符号int;<表示小端 02 00 00 00crc=binascii.crc32(data)&0xffffffff #byte的大小为8bits而int的大小为32bits,转换时进行与运算避免补码问题0x932f8a6bif crc==struct.unpack('>I',fi[29:33])[0]&0xffffffff : #解开为无符号整数print(i)
参考链接:
https://blog.csdn.net/jackyzhousales/article/details/78030847
https://blog.csdn.net/persist213/article/details/79374914
Python3 PNG文件格式及根据CRC检验码修复图片高度相关推荐
- CRC爆破png图片宽度和高度原理以及python代码
CRC爆破png图片宽度和高度原理以及python代码 文章目录 CRC爆破png图片宽度和高度原理以及python代码 1.PNG图片的格式 2.CRC 3.Python爆破图片宽度和高度 参考文章 ...
- Python改变图片EXIF信息(修复图片上传后方向改变的BUG)
文章目录 简介 安装 读取 EXIF 保存 EXIF 插入 EXIF 删除 EXIF 复制 EXIF 将 PIL 读取的信息存入 EXIF 标签内容 根据旋转信息旋转图片 生成一套方向图片 ExifT ...
- 小程序源码:修复图片音频全新升级带特效喝酒神器小游戏微信小程序
这是一款全新升级带特效喝酒神器小游戏微信小程序源码 小编发现很多喝酒神器小程序都不带特效和音效的 感觉差了那么一点意思而且感觉也不炫酷 所以小编今天给大家带来一款带特效,音效炫酷的喝酒神器 该款神器由 ...
- 微信小程序:修复图片音频全新升级带特效喝酒神器源码
这是一款全新升级带特效喝酒神器小游戏微信小程序源码 小编发现很多喝酒神器小程序都不带特效和音效的 感觉差了那么一点意思而且感觉也不炫酷 所以小编今天给大家带来一款带特效,音效炫酷的喝酒神器 该款神器由 ...
- 小程序源码:修复图片音频全新升级带特效喝酒神器小游戏-多玩法安装简单
这是一款全新升级带特效喝酒神器小游戏微信小程序源码 小编发现很多喝酒神器小程序都不带特效和音效的 感觉差了那么一点意思而且感觉也不炫酷 所以小编今天给大家带来一款带特效,音效炫酷的喝酒神器 该款神器由 ...
- 4个工具,个个都是精品!修复图片视频画质超好用
分享4个好用的修复图片视频画质的工具,操作简单,上传图片或者视频就能一键修复画质,让图片视频秒变清晰! 1.改图鸭 一个免费的图片在线编辑处理网站,它里面有图片压缩.图片编辑.图片格式转换.抠图换背景 ...
- 图片如何高清修复?高清修复图片的方法
图片如何高清修复?很多时候,在我们日常的拍照过程中,总是会遇到一不小心将照片拍模糊的情况.虽然说现在人们都提倡朦胧美,但是照片太糊毕竟还没那么好看.这里小编就来教大家修复图片的好用方法,希望能对大家编 ...
- python3 requests+bs4爬取某网页MM图片
python3 requests+bs4爬取某网页MM图片 原理: 将所要抓取的首页分标题及地址保存到字典,遍历字典,对每一个标题下的所有分页进行抓取 import requests from bs4 ...
- python3爬虫爬取百度贴吧下载图片
python3爬虫爬取百度贴吧下载图片 学习爬虫时没事做的小练习. 百度对爬虫还是很友好的,在爬取内容方面还是较为容易. 可以方便各位读者去百度贴吧一键下载每个楼主的图片,至于是什么类型的图片,就看你 ...
最新文章
- 【Qt】设置窗口透明度
- 对于STM32F103三轴机械臂控制器进行基本功能测试-关节角度读取
- Python语言学习:Python随机生成那些事之随机生成使用方法、案例应用之详细攻略
- streamsets rest api 转换 graphql
- 【翻译】.NET Core3.1发布
- Bootstrap 模态框插件Modal 的选项
- 【数字信号去噪】基于matlab小波软阈值+硬阈值+改进的阈值高斯脉冲信号去噪【含Matlab源码 1706期】
- 风火速打印小程序分析
- leo_物业收费管理系统
- XDD QQ机器人修复方案
- Zabbix设置微信报警
- 高德地图 API,点击地图标记获取自定义标记 (Marker) 中的信息
- android 代码审核 同质化,李相国:Android同质化竞争以差异制胜
- 芝加哥大学计算机科学,芝加哥大学计算机科学排名第32(2018年TFE美国排名)
- 免费链接投票作品投票通道线上投票活动制作网络投票制作
- 在Ubuntu使用终端安装PPA仓库的软件
- 字符串转化为 List 集合
- 在计算机系统中扩展名为.com的文件是【 】文件,2016年职称计算机考试Windows考前模拟试题20...
- jmeter性能测试报告之图形化展示
- E-day0004:annotate