PPM / PGM / PBM图像文件

本说明介绍PPM(Portable PixMap),PGM(Portable GreyMap),PBM(Portable BitMap)文件的格式。这些格式是保存图像数据的方便(简单)的方法,它们同样易于在自己的应用程序中读取。不幸的是,这些标准并不总是可以实现的。


PPM

PPM文件由header和image data两部分组成。

header由至少三个部分组成,通常由回车符、换行符描述,但PPM规范中仅需要空格。

第一行是一个magic标识符,它可以是“P3”或“P6”(不包括双引号!)。
下一行由图像的宽度和高度作为ASCII数字组成。
header的最后一部分给出了像素的颜色分量的最大值,这允许格式描述多于单字节(0-255)的颜色值。
除了上述所需的行之外,注释可以放在任何具有“#”字符的位置,注释扩展到行的末尾。

以下是所有有效的PPM Header:

Header 示例1
P6 1024 788 255
Header 示例2
P6 
1024 788 
# A comment
255
Header 示例3
P3
1024 # the image width
788 # the image height
# A comment
1023

图像数据本身的格式取决于magic标识符。如果是“P3”,则图像数据以ASCII文本形式给出,每个像素的数值范围从0到header中给出的最大值。每行不应超过70个字符。

PPM 示例4
P3
# example from the man page
4 4
15
 0  0  0    0  0  0    0  0  0   15  0 15
 0  0  0    0 15  7    0  0  0    0  0  0
 0  0  0    0  0  0    0 15  7    0  0  0
15  0 15    0  0  0    0  0  0    0  0  0

如果PPM的magic标识符为“P6”,则图像数据以字节格式存储,每个颜色分量(r,g,b)一个字节。注释只能在header的最后一个字段之前发生,并且只有一个字节可能出现在最后一个字段后面,通常是回车符或换行符。“P6”图像文件大小要明显小于“P3”,读取速度要快得多。请注意,“P6”PPM文件只能用于单字节颜色

虽然格式规范不需要,但是以从顶部到底部,从左到右的顺序存储图像是一种标准惯例。每个像素存储为一个字节,值为0代表黑色,值为255代表白色。“通常”按顺序存储红-绿-蓝色。


PGM

该格式与上述相同,只是存储内容是灰度信息,即一个值代表一个像素而不是三个值(r,g,b)代表一个像素。header部分的唯一区别是“P2”和“P5”作为magic标识符,它们分别对应于图像数据的ASCII和二进制形式。

PGM 示例
P2
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

PBM

PBM将单位像素图像存储为一系列ASCII“0”或“1”。“0”表示白色,“1”表示黑色。 除了没有header的最后一部分(最大像素值在这种存储方式下没有任何意义),它的header与PPM和PGM格式相同,PBM的magic标识符为“P1”。

PBM 示例
P1
# PBM example 
24 7
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 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0
0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0
0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0
0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0
0 1 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 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
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值