作业3.1png图像格式文件解析
文章目录
- png文件格式概述
- (1)格式特性
- 流式读/写性能
- 图像说明部分
- (2)文件结构
- PNG文件署名域
- 数据块的结构
- (3)文件格式
- (4)4个标准数据块
- 文件头数据块IHDR(header chunk)
- 调色板数据块PLTE(palette chunk)
- 图像数据块IDAT(image data chunk)
- 图像结束数据IEND(image trailer chunk)
png文件格式概述
png是一种无损压缩的位图片形格式。其设计目的是为了替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。
png格式是非失真性压缩的,允许使用类似于GIF格式的调色板技术,支持真彩色图像,并具备阿尔法通道(半透明)等特性。png使用从LZ77派生的无损数据压缩算法,由于它压缩比高,生成文件体积小,一般被应用于JAVA程序、网页或S60程序中。
(1)格式特性
使用彩色查找表或者叫做调色板可支持256种颜色的彩色图像
流式读/写性能
图像文件格式允许连续读出和写入图像数据,这个特性很适合于在通信过程中生成和显示图像。
图像说明部分
每个像素为48位的真彩色图像。
每个像素为16位的灰度图像。
可为灰度图和真彩色图添加α通道。
添加图像的γ信息。
使用循环冗余码(cyclic redundancy code,CRC)检测损坏的文件。
(2)文件结构
PNG图像格式文件由一个8字节的PNG文件署名域和按照特定结构组织的3个以上的数据块组成。PNG定义了两种类型的数据块,一种是称为关键数据块(critical chunk),这是标准的数据块,另一种叫做辅助数据块(ancillary chunks),这是可选的数据块。关键数据块定义了4个标准数据块,每个PNG文件都必须包含它们,PNG读写软件也都必须要支持这些数据块。
PNG文件署名域
8字节的PNG文件署名域用来识别该文件是不是PNG文件。该域的值是:
十进制数137 80 78 71 1310 26 10
十六进制数 89 50 4e 47 0d 0a 1a 0a
数据块的结构
Length(长度): 4字节 指定数据块中数据域的长度,其长度不超过(231-1)字节
Chunk Type Code(数据块类型码): 4字节 数据块类型码由ASCII字母(A-Z和a-z)组成
Chunk Data(数据块数据) :可变长度 存储按照Chunk Type Code指定的数据
CRC(循环冗余检测) :4字节 存储用来检测是否有错误的循环冗余码
框选的第一部分表示数据块数据长度(即第3部分),为13字节
框选的第二部分数据块类型码
框选的第三部分是数据块部分
框选的第四部分和第五部分是CRC校验码:它的值是对Chunk Type Code域和Chunk Data域中的数据进行计算得到的。CRC具体算法定义在ISO 3309和ITU-T V.42中,其值按下面的CRC码生成多项式进行计算:x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
(3)文件格式
PNG格式有8位、24位、32位三种形式,其中8位PNG支持两种不同的透明形式(索引透明和alpha透明),24位PNG不支持透明,32位PNG在24位基础上增加了8位透明通道,因此可展现256级透明程度。
(4)4个标准数据块
文件头数据块IHDR(header chunk)
它包含有PNG文件中存储的图像数据的基本信息,并要作为第一个数据块出现在PNG数据流中,而且一个PNG数据流中只能有一个文件头数据块。
该图像宽度为1893,高度为415,图像深度为8,颜色类型为真彩色图像,压缩方法为0,滤波器方法为0,非隔行扫描。
调色板数据块PLTE(palette chunk)
它包含有与索引彩色图像((indexed-color image))相关的彩色变换数据,它仅与索引彩色图像有关,而且要放在图像数据块(image data chunk)之前。真彩色的PNG数据流也可以有调色板数据块,目的是便于非真彩色显示程序用它来量化图像数据,从而显示该图像。
调色板实际是一个彩色索引查找表,它的表项数目可以是1~256中的一个数,每个表项有3字节,因此调色板数据块所包含的最大字节数为768。
图像数据块IDAT(image data chunk)
它存储实际的数据,在数据流中可包含多个连续顺序的图像数据块。
图像结束数据IEND(image trailer chunk)
它用来标记PNG文件或者数据流已经结束,并且必须要放在文件的尾部。
从上图可以看出,IEND 数据块的长度总是0 (00 00 00 00,除非人为加入信息),数据标识总是IEND (49 45 4E 44),因此,CRC码也总是AE 42 60 82。
除了表示数据块开始的IHDR必须放在最前面, 表示PNG文件结束的IEND数据块放在最后面之外,其他数据块的存放顺序没有限制。
作业3.1png图像格式文件解析相关推荐
- 数据压缩作业二——分析tga文件
数据压缩作业二--分析tga文件 文章目录 数据压缩作业二--分析tga文件 一.TGA格式文件概述 二.使用二进制编辑软件分析tga文件 1.TGA文件头(TGA FILE HEADER) 2. 图 ...
- PDF 与 PS页面描述语言与PDF文件解析(转)
PDF 与 PS页面描述语言与PDF文件解析(转) 页面描述语言 页面描述语言(Page Description Language,简称PDL)是一种面向输出效应的语言,用于描述打印或照排的版面,这种 ...
- Json文件解析(下
Json文件解析(下) 代码地址:https://github.com/nlohmann/json 从STL容器转换 任何序列容器(std::array,std::vector,std::deque, ...
- Json文件解析(上)
Json文件解析(上) 代码地址:https://github.com/nlohmann/json 自述文件 alt=GitHub赞助商 data-canonical-src="https: ...
- OpenCV读写视频文件解析(二)
OpenCV读写视频文件解析(二) VideoCapture::set 设置视频捕获中的属性. C++: bool VideoCapture::set(int propId, double value ...
- OpenCV读写视频文件解析
OpenCV读写视频文件解析 一.视频读写类 视频处理的是运动图像,而不是静止图像.视频资源可以是一个专用摄像机.网络摄像头.视频文件或图像文件序列. 在OpenCV 中,VideoCapture 类 ...
- cocosstudio csd文件解析为.lua
在学习python过程中,有幸能够看到一位大神在网页中公开的一个关于<CocosStudio 文件解析工具CsdAnalysis>的源码.本人使用稍作改变,由原有的.csd文件转换为C++ ...
- java解析五元组_pcap文件解析,并且按照五元组分类
[实例简介] pcap文件解析,并按照五元组分包,全部用java语言实现. [实例截图] [核心代码] PcapTestZZ ├── PcapTestZ │ ├── 111.206.37.1930 ...
- 文件解析库doctotext源码分析
doctotext中没有make install选项,make后生成可执行文件 在buile目录下面有.so动态库和头文件,需要的可以从这里面拷贝 build/doctotext就是可执行程序. do ...
最新文章
- Webex远程网络视频会议使用指南
- Nginx之让用户通过用户名密码认证访问web站点
- 想成为程序员的话,这些书单必不可少——算法篇
- 基于EasyNVR二次开发实现业务需求:直接集成EasyNVR播放页面到自身项目
- 山师计算机专业研究生怎么样,山东师范大学有计算机专业硕士吗?
- 负数、原码、反码、补码
- NAT(网络地址转换)实现方式
- PRICAI 2016 论文精选 | 基于车辆优先级优化交通系统的道路分布
- 截取年月日在hana中怎么写_SAP HANA跟我学HANA系列之日期函数总结
- 计算机和资源管理器的异同,计算机应用基础ex.doc
- 细说ip地址与同一网段
- 用户故事Invest原则、敏捷与完整的需求
- vue移动端实现word在线预览
- 腾讯云轻量服务器搭建,腾讯云轻量服务器配置系统镜像自定义建站及安全组配置...
- 前端花瓣飘落特效代码
- 【CF487E】 Tourists 简易题解
- 背包问题(简单回溯)
- 一键自动完成 2021 京东/淘宝双 11 活动
- 【Unity实战100例】文件压缩Zip和ZIP文件的解压
- 【Pandas总结】第八节 Pandas 合并数据集_pd.merge()
热门文章
- Qt6以上版本用cmake编译MYSQL驱动
- 奶奶走了,永远见不到她了
- 《英语播客》系列之二:Nature Podcast
- 视频教程-小白学习课程:梯度下降算法与公式详细推导-深度学习
- CCF ADL97《图计算》整理
- 全双工、半双工、单工有什么区别!
- 小程序可不止微信,带你认识百度抖音头条支付宝平台小程序的优势
- matlab滤波器在哪,在使用MATLAB进行滤波器设计时,需要注意的是:使用FDAtool工具所设计的滤波器是( )滤波器。...
- ggplot2图形简单绘制
- 港科夜闻|2022年QS世界大学学科排名发布,香港科大10个学科位列香港第1世界前50...