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检验码修复图片高度相关推荐

  1. CRC爆破png图片宽度和高度原理以及python代码

    CRC爆破png图片宽度和高度原理以及python代码 文章目录 CRC爆破png图片宽度和高度原理以及python代码 1.PNG图片的格式 2.CRC 3.Python爆破图片宽度和高度 参考文章 ...

  2. Python改变图片EXIF信息(修复图片上传后方向改变的BUG)

    文章目录 简介 安装 读取 EXIF 保存 EXIF 插入 EXIF 删除 EXIF 复制 EXIF 将 PIL 读取的信息存入 EXIF 标签内容 根据旋转信息旋转图片 生成一套方向图片 ExifT ...

  3. 小程序源码:修复图片音频全新升级带特效喝酒神器小游戏微信小程序

    这是一款全新升级带特效喝酒神器小游戏微信小程序源码 小编发现很多喝酒神器小程序都不带特效和音效的 感觉差了那么一点意思而且感觉也不炫酷 所以小编今天给大家带来一款带特效,音效炫酷的喝酒神器 该款神器由 ...

  4. 微信小程序:修复图片音频全新升级带特效喝酒神器源码

    这是一款全新升级带特效喝酒神器小游戏微信小程序源码 小编发现很多喝酒神器小程序都不带特效和音效的 感觉差了那么一点意思而且感觉也不炫酷 所以小编今天给大家带来一款带特效,音效炫酷的喝酒神器 该款神器由 ...

  5. 小程序源码:修复图片音频全新升级带特效喝酒神器小游戏-多玩法安装简单

    这是一款全新升级带特效喝酒神器小游戏微信小程序源码 小编发现很多喝酒神器小程序都不带特效和音效的 感觉差了那么一点意思而且感觉也不炫酷 所以小编今天给大家带来一款带特效,音效炫酷的喝酒神器 该款神器由 ...

  6. 4个工具,个个都是精品!修复图片视频画质超好用

    分享4个好用的修复图片视频画质的工具,操作简单,上传图片或者视频就能一键修复画质,让图片视频秒变清晰! 1.改图鸭 一个免费的图片在线编辑处理网站,它里面有图片压缩.图片编辑.图片格式转换.抠图换背景 ...

  7. 图片如何高清修复?高清修复图片的方法

    图片如何高清修复?很多时候,在我们日常的拍照过程中,总是会遇到一不小心将照片拍模糊的情况.虽然说现在人们都提倡朦胧美,但是照片太糊毕竟还没那么好看.这里小编就来教大家修复图片的好用方法,希望能对大家编 ...

  8. python3 requests+bs4爬取某网页MM图片

    python3 requests+bs4爬取某网页MM图片 原理: 将所要抓取的首页分标题及地址保存到字典,遍历字典,对每一个标题下的所有分页进行抓取 import requests from bs4 ...

  9. python3爬虫爬取百度贴吧下载图片

    python3爬虫爬取百度贴吧下载图片 学习爬虫时没事做的小练习. 百度对爬虫还是很友好的,在爬取内容方面还是较为容易. 可以方便各位读者去百度贴吧一键下载每个楼主的图片,至于是什么类型的图片,就看你 ...

最新文章

  1. 【Qt】设置窗口透明度
  2. 对于STM32F103三轴机械臂控制器进行基本功能测试-关节角度读取
  3. Python语言学习:Python随机生成那些事之随机生成使用方法、案例应用之详细攻略
  4. streamsets rest api 转换 graphql
  5. 【翻译】.NET Core3.1发布
  6. Bootstrap 模态框插件Modal 的选项
  7. 【数字信号去噪】基于matlab小波软阈值+硬阈值+改进的阈值高斯脉冲信号去噪【含Matlab源码 1706期】
  8. 风火速打印小程序分析
  9. leo_物业收费管理系统
  10. XDD QQ机器人修复方案
  11. Zabbix设置微信报警
  12. 高德地图 API,点击地图标记获取自定义标记 (Marker) 中的信息
  13. android 代码审核 同质化,李相国:Android同质化竞争以差异制胜
  14. 芝加哥大学计算机科学,芝加哥大学计算机科学排名第32(2018年TFE美国排名)
  15. 免费链接投票作品投票通道线上投票活动制作网络投票制作
  16. 在Ubuntu使用终端安装PPA仓库的软件
  17. 字符串转化为 List 集合
  18. 在计算机系统中扩展名为.com的文件是【 】文件,2016年职称计算机考试Windows考前模拟试题20...
  19. jmeter性能测试报告之图形化展示
  20. E-day0004:annotate

热门文章

  1. 蓝牙耳机半入耳推荐,2022半入耳运动蓝牙耳机推荐
  2. Web自动化测试Selenium【入门必看】
  3. w806大黄蜂 android 刷机
  4. 两个音轨合并_怎样把两个音频文件合并成一个?
  5. 概述struts_进行概述
  6. 大型健身俱乐部会员管理捷径体系
  7. Python+selenium自动化测试框架
  8. 用python爬取漫画,代入感太强了
  9. 游戏环境修复_三千余名玩家因为bug被封号三年?游戏环境不能只靠官方维护
  10. 优酷网页player使用-替换视频ID即可