png文件分析

PNG是一种无损压缩的位图格式,常用于网络传输。其文件头由89、504E47、0D0A1A0A组成,确保文件识别与兼容性。关键数据块包括IHDR(图像头部)、PLTE(调色板)、IDAT(图像数据)和IEND(图像结束)。辅助数据块如bKGD、gAMA等提供了更多图像信息。PNG因其无版权问题和强大的数据完整性检查在互联网中广泛应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Portable Network Graphics (PNG, 官方发音为 /pɪŋ/, 但通常被念作 /ˌpiːɛnˈdʒiː/) ,是一种无损压缩的位图图像格式。它支持索引、灰度、RGB三种颜色方案以及Alpha通道等特性。PNG的开发目标是改善并取代GIF作为适合网络传输的格式而不需专利许可,所以被广泛应用于互联网及其他方面上。
PNG设计用于在线查看应用程序, 例如万维网,因此它可以通过渐进式显示选项完全流式传输。PNG 非常强大,既能提供完整的文件完整性检查,又能对常见传输错误进行简单检测。此外,PNG 还可以存储伽玛和色度数据,以改善异构平台上的颜色匹配
用二进制编辑器打开png文件,我们可以看到其格式内容,如下:
随意找了张图片打开了
其中前八比特为文件头(file header),用来表示这是一个png文件:
文件头
其含义为:
89:表示不支持8bit的数据,并减小一个文本文件被错误地认为是PNG文件的可能性。
50 4E 47:英文字符串“PNG”的ASCII码
0D 0A:DOS风格的换行符(CRLF)。用于DOS-Unix数据的换行符转换。
1A:在DOS命令行下,用于阻止文件显示的文件结束符。
0A:Unix风格的换行符(LF)。用于Unix-DOS换行符的转换。

其余部分为数据块(chunks),包括关键数据块(critical chunk)和辅助数据块(ancillary chunks)两种。
其中关键数据块是必须存在的,包括:
IHDR,header chunk:包含有图像基本信息,作为第一个数据块出现并只出现一次。
在这里插入图片描述
PLTE,palette chunk:调色板数据块,必须存放在图像数据块之前。
在这里插入图片描述

IDAT,image data chunk,存储实际的图像数据。PNG数据包允许包含多个连续的图像数据块
图像的主体内容,中间这些全是

IEND,image trailer chunk:图像结束数据,表示PNG数据流结束。
在这里插入图片描述

而辅助数据块是可选的,包括:
背景颜色数据块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)。
—————————————————————————————————
参考文档:https://blog.youkuaiyun.com/Cross_Entropy/article/details/105179408

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值