PGM文件格式解析
来源:互联网 发布:javascript编写工具 编辑:程序博客网 时间:2024/06/11 13:51
本文转载自:PGM文件格式
PGM文件格式
- PGM—-Portable Graymap Format。
- pgm格式是灰度文件格式的最低标准。
PGM文件的格式定义如下:
一个PGM文件由一个或多个PGM图象组成。 在多副图象之间,之前或之后没有任何数据存在。 每一个PGM 图像由以下部分组成:
文件头部分
文件头包括的信息依次是:
PGM文件的格式类型(是P2还是P5);
图像的宽度;
图像的高度;
图像灰度值可能的最大值;
文件头的这四部分信息都是以ASCII码形式存储的,所以可以直接在将P2或P5格式的PGM文件在记事本中打开看到文件头的信息。
在P2或P5类型的PGM文件头的4个信息之间用分割符分开,PGM的合法分隔符包括:空格,TAB,回车符,换行符。PGM文件头的信息应该由合法分割符号分开,如下图所展。文件头的第4个信息,图像灰度值可能的最大值标明了文件数据部分可能出现的像素灰度值的最大值。
数据部分
数据部分记录图像每个像素的灰度值,按照图像从上到下,从左到右的顺序依次存储每个像素的灰度值。对于像素灰度值的表示P2格式和P5格式有所不同。
P5格式
P5格式的文件,每个像素用可以用二进制表示。比如有一幅P5格式图像,灰度值可能的最大值为255,它的第一行第一列像素值为100,那么该图像每个像素使用一个字节表示,第一行第一列为数值为100的二进制一个字节表示。如果这副图灰度值可能的最大值是65535,那么它的第一行第一列为数值为100的二进制两个字节表示(因为表示到65535需要两个字节)。每个像素数据之间没有间隔的连续存储,图像一行信息结束后从下一行第一列继续,两行图像数据之间也没有间隔的连续存储,直到将图像的所有信息表示完。因为是以二进制表示,所以数据部分在记事本中打开后看到的将会是乱码。
P2格式
P2格式的文件,每个像素使用字符串来表示,比如一副P2格式图像,灰度值可能的最大值为255,它的第一行第一列像素值为100,那么该图像图像每个像素使用3个ASCII字符表示,第一行第一列数据为ASII表示的”100”。不同于P5格式,每个像素数据之间需要用一个空格符分开存储,在图像的每一行数据结束时需要换行。还有一点需要注意,P2格式文件数据部分当数据超过70个字节的时候,会自动换行。也就是说图像的每一行数据末尾,或者存储时超过70个字节时,需要进行换行。
PGM文件示例:
P5
24 7
15
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 0
0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 15 0
0 3 3 3 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 15 15 15 15 0
0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 0 0
0 3 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
- PGM文件格式解析
- PGM文件格式
- PGM文件格式
- PGM文件格式
- PGM文件格式
- PGM文件格式
- PGM文件格式
- PGM
- ffmpeg解析-----解析文件格式
- vCalendar文件格式解析
- MP3文件格式解析
- Windows快捷方式文件格式解析
- MP3文件格式解析
- java class文件格式解析
- PLY文件格式及其解析
- MP3文件格式解析
- GIF文件格式解析
- MP3文件格式解析
- 渣蜀黍 - iOS 个人笔记(三)_上拉下拉的tabelview
- 黑马程序员--IOS学习笔记(OC-点语法)
- OSG+VS2010+win7环境搭建
- 如何在代码中动态添加布局以及相关的控件
- Java concurrent常用实例
- PGM文件格式解析
- C/C++--strcmp函数实现
- [CF 251E]Tree and Table题解翻译
- 安卓 bug
- 在Python中使用cx_Oracle调用Oracle存储过程
- 在执行器中取消任务
- struts2学习笔记-2.struts2与自己写的拦截器不同
- C++类中的static数据成员,static成员函数
- iOS开发UI篇—自定义瀑布流控件(蘑菇街数据刷新操作)