文件结构:

PNG图像格式文件由文件署名和数据块(chunk)组成。

文件署名域:

8字节的PNG文件署名域用来识别该文件是不是PNG文件。该域的值是:

数据块:

这里有两种类型的数据块,一种是成为关键数据块(critical chunk),就是必须要有的块;另一种叫做辅助数据块(ancillary chunks)。

每个数据块都有下表所示的4个域组成。

其中CRC(cyclic redundancy check)域中的值是对Chunk Type Code域和Chunk Data域中的数据进行计算得到的,可以看做一种校验码。

关键数据块:

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

文件头数据块由13字节,组成结构如下:

(2)调色板数据块PLTE(palette chunk):

它包含有与索引彩色图像(indexed-color image)相关的彩色变换数据,它仅与索引彩色图像有关,而且要放在图像数据块(image data chunk)之前。真彩色的PNG数据流也可以有调色板的数据块,目的是便于非真彩色显示程序用它来量化图像数据,从而显示该图像。结构如下:

颜色|字节|意义

Red|1 byte||0=黑色,255=红|
Green|1 byte||0=黑色,255=绿色
Blue|1 byte||0=黑色,255=蓝色|

PLTE数据块是定义图像的调色板信息,PLTE可以包含1~256个调色板信息,每个调色板信息有3个字节组成,因此调色板数据块包含的最大字节数为768,
调色板的长度应该是3倍数,否则,这将是一个非法的调色板。

对于索引图像,调色板信息是必须的,调色板的颜色索引从0开始编号,然后是1..2..,调色板的颜色数不能超过色深中规定的颜色数(如图像色深为4的时候,调色板中的颜色数不可超过2^4=16)否则,这将导致PNG图像不合法。

(3)图像数据块IDAT(image data chunk):

它存储实际的数据,在数据流中可包含多个连续的图像数据块。

IDAT存放着图像真正的数据信息,因此,如果能够了解IDAT的结构,我们就可以很方变得生成PNG图像。

(4)图像结束数据IEND(image trailer chunk):
它用来标记PNG文件或者数据流已经结束,并且必须要放在文件的尾部。

如果我们仔细看PNG文件,我们会发现,文件的结尾12个字符看起来总是:
00 00 00 00 49 45 4E 44 AE 42 60 82

不难明白,由于数据结构块的定义,IEND数据块的长度总是0(00 00 00 00,除非人为加入信息),数据标识总是IEND(49 45 4E 44),因此,CRC码也总是AE 42 60 82.

最后,除了表示数据块开始的IHDR必须放在最前面,表示PNG文件结束的IEND数据块放在最后面之外,其他数据块的存放顺序没有限制。

辅助数据块:

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

1.背景颜色数据块bkGD(background color).
2.基色和白色度数据块cHRM(primary chromaticities and white point).所谓白色度是指当R=G=B=最大值时在显示器上产生的白色度。
3.图像透明数据块tRNS(transparency).
4.物理像素尺寸数据块pHYs(physical pixel dimensions)。

欢迎关注微信公众号

png文件格式的详解:相关推荐

  1. wav文件格式分析详解

    wav文件格式分析详解 作者:曹京 日期:2006年7月17日 一.综述     WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的. RIFF是英文Resource Inte ...

  2. CT影像文件格式DICOM详解

    CT影像文件格式DICOM详解 DICOM简介 DICOM(Digital Imaging and Communications in Medicine)即医学数字成像和通信,是医学图像和相关信息的国 ...

  3. 【转】CT影像文件格式DICOM详解

    CT影像文件格式DICOM详解 DICOM简介 DICOM(Digital Imaging and Communications in Medicine)即医学数字成像和通信,是医学图像和相关信息的国 ...

  4. 顶象App加固技术解析:DEX文件格式的详解

    Android应用的源代码主要分为java与C/C++两部分,其中java编译后的文件是DEX文件,也是Android Dalvik虚拟机运行的程序,因此也是基于Android平台的虚机应用很难绕过的 ...

  5. ELF文件格式的详解

    1.说明 2.elf文件的基本格式 3.elf文件的头部信息 4.elf文件的节区(Section) 4.1 节区的作用 4.2 节区的组成 5.elf文件的段(Segment) 6.用python解 ...

  6. 关于BMP文件格式的详解

    什么是BMP BMP(全称Bitmap)是Windows操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广.它采用位映射存储格式,除了图像深度可选以 ...

  7. 【音视频知识】MP4文件格式解析-详解

    目前MP4的概念被炒得很火,也很乱.最开始MP4指的是音频(MP3的升级版),即MPEG-2 AAC标准.随后MP4概念被转移到视频上,对应的是MPEG-4标准.而现在我们流行的叫法,多半是指能播放M ...

  8. BMP文件格式详解(BMP file format) (转)

    自:http://www.cnblogs.com/Jason_Yao/archive/2009/12/02/1615295.html BMP文件格式,又称为Bitmap(位图)或是DIB(Device ...

  9. wav文件格式分析与详解

    wav文件格式分析与详解 WAV文件是在PC机平台上很常见的.最经典的多媒体音频文件,最早于1991年8月出现在Windows 3.1操作系统上,文件扩展名为WAV,是WaveFom的简写,也称为波形 ...

最新文章

  1. Ubuntu18.04安装VMware WorkStation
  2. 论文笔记:CycleGAN
  3. jdk自带的Unicode转utf8工具
  4. linux设备驱动开发专业论坛www.linuxdriver.cn诚征斑竹
  5. 给Nodejs回调加超时限制
  6. 三大执业考试爆泄题丑闻 部分助考机构成泄题中介
  7. 条款23: 必须返回一个对象时不要试图返回一个引用
  8. CSS属性之position
  9. 各平台的坐标拾取系统
  10. 黑马程序员—黑客与画家——工作3年再转型(附赠大绝招)
  11. 网页缩放与窗口缩放_缩放—对您的隐私有多严重?
  12. matplotlib-19 堆积图
  13. PADS VX2.8 原理图图页的添加与名称修改的方法
  14. 基于导向滤波的暗通道先验去雾算法(Python,可直接运行)
  15. 京东关于区块链的发展历程
  16. 序列化解决方案,就是采用二进制通信协议(数据报文格式)
  17. 设计师必读的 10 本书
  18. cnpm : 无法加载文件 D:\myDEV\newNode\node_global\cnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com
  19. 简单用户登录系统 实现注册 登录功能
  20. 设计秒流量与管径关系表

热门文章

  1. 天融信网络知识小百科——第七回:浅谈接入层交换机的门道
  2. 【BZOJ4008】【HNOI2015】亚瑟王(DP,期望概率)
  3. edusrc漏洞笔记(逻辑篇)
  4. 联想20Q6A00HCD笔记本电脑
  5. 【年度福利】聚宽2018年度评选+精选文章合集
  6. 基于jquery的秒表倒计时
  7. nas安装emby_威联通QNAP系统入门进阶 篇二:宅家新姿势—威联通NAS安装套件版Emby搭建家庭影音服务器...
  8. USBtoTTL用FLyMcu给STM32下载程序的一个问题
  9. android 项目高版本换成低版本
  10. 雷达系统 学习笔记(十)——合成孔径雷达3