png格式 二进制存储方式

PNG文件结构分析之一(了解PNG文件存储格式)

       8字节 → PNG文件头(固定)

  再往后就是第一个数据块:数据块由4字节的数据域长度,4字节的类型码,指定长度(前面提到的数据域长度,这里IHDR就是0x0D个字节也即13字节)的数据,和4字节的CRC码组成。

  而IHDR的组成为:4字节宽度,4字节高度,1字节位深度,1字节颜色类型,1字节压缩方法,1字节滤波方法,1字节隔行扫描方法。

  • 00 00 00 0D 说明IHDR头块长为13
  • 49 48 44 52 IHDR标识
  • 00 00 00 08 图像的宽,8像素
  • 00 00 00 08 图像的高,8像素
  • 04 色深,2^4=16,即这是一个16色的图像(也有可能颜色数不超过16,当然,如果颜色数不超过8,用03表示更合适)
  • 03 颜色类型,索引图像
  • 00 PNG Spec规定此处总为0(非0值为将来使用更好的压缩方法预留),表示使压缩方法(LZ77派生算法)
  • 00 同上
  • 00 非隔行扫描
  • 36 21 A3 B8 CRC校验码

CRC就是对类型码和数据域进行计算得到的

-------------------------

(固定)8个字节 89 50 4E 47 0D 0A 1A 0A 为 png的文件头

(固定)4个字节 00 00 00 0D (即为十进制的13)代表数据块的长度为13

(固定)4个字节 49 48 44 52 (即为ASCII码的IHDR)是文件头数据块的标示(IDCH)

(可变) 13位数据块(IHDR)   
      前四个字节代表该图片的宽 00 00 00 08 
      后四个字节代表该图片的高 00 00 00 08 
      后五个字节依次为: Bit depth、ColorType、 Compression method、 Filter method、Interlace method

 (可变)剩余四字节为该png的CRC检验码 36 21 A3 B8,由从IDCH到THDR的十七位字 节进行crc计算得到。

 

posted @   笠航  阅读(2529)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示