PNG格式文件分析

一、PGN文件简介

是一种位图文件(bitmap file)存储格式,读成"ping"。PNG用来存储灰度图像时,灰度图像的深度可多到16位,存储彩色图像时,彩色图像的深度可多到48位,并且还可存储多到16位的α通道数据。

二、PNG文件结构

PNG文件一般由两大部分组成:

1、文件头:Filehead,用来标识这是一个PNG格式的文件。

该域的值为:十进制数137 80 78 71 13 10 26 10 十六进制数 89 50 4e 47 0d 0a 1a 0a

2、其他部分:Chunks,其他的部分则是由多个数据块组成的,存储了描述图像的相关信息。

PNG定义了两种类型的数据块:
一种是称为关键数据块(critical chunk),这是必需的数据块;
另一种叫做辅助数据块(ancillary chunks),这是可选的数据块。

关键数据块定义了4个标准数据块,每个PNG文件都必须包含它们,PNG读写软件也都必须要支持这些数据块。

(1)关键数据块

关键数据块有四种类型:

IHDR,header chunk,包含有图像基本信息,作为第一个出现的数据块并且只出现一次。
PLTE,palette chunk,调色板数据块,必须存放在图像数据块之前。
IDAT,image data chunk,存储实际的图像数据。PNG数据包允许包含多个连续的图像数据块。
IEND,image trailer chunk,图像结束数据,表示PNG数据流结束。

(2)辅助数据块

PNG文件格式规范制定了10个辅助数据块:

背景颜色数据块bKGD(background color)。
基色和白色度数据块cHRM(primary chromaticities and white point)。
图像γ数据块gAMA(image gamma)。
图像直方图数据块hIST(image histogram)。
物理像素尺寸数据块pHYs(physical pixel dimensions)。
样本有效位数据块sBIT(significant bits)。
文本信息数据块tEXt(textual data)。
图像最后修改时间数据块tIME (image last-modification time)。
图像透明数据块tRNS (transparency)。
压缩文本数据块zTXt (compressed textual data)。

三、获取元数据
每读取到一个chunk,只需要读取前八个字节就可以大体知道这个数据块的大小,以及数据类型。

(1)IHDR

文件头数据块IHDR(header chunk):它包含有PNG文件中存储的图像数据的基本信息,并要作为第一个数据块出现在PNG数据流中,而且一个PNG数据流中只能有一个文件头数据块。由13字节组成

区域字节数说明
Width4图像宽度
Height4图像高度
Bit depth1图像深度
ColorType1颜色类型
Compression Method1压缩方法
Filter Method1滤波器方法
Interlace Method1

隔行扫描方法

(2)PLTE

区域字节数说明
Red10=黑,255=红
Green10=黑,255=绿
Blue10=黑,255=蓝

    (3)  IDAT

   存储实际的图像数据。

   (4)

   表示PNG文件或数据流已经结束
   16进制表示为:00 00 00 00 49 45 4E 44 AE 42 60 82 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值