zoukankan      html  css  js  c++  java
  • 图片存储格式 PNM 以及 PBM/PGM/PPM

    图片的存储格式之一是PNM——实际上是PBM、PGM、PPM三种格式的统称。这三种格式的语法很接近,分别对就黑白图片、灰度图片和彩色图片。

    PNM是"Portable Any Map"的缩写。

    PNM文件可以用程序xview或kview打开。

    PPM->Portable PixMap
    PGM->Portable GreyMap
    PBM->Portable BitMap
    PBM支持单色图(1个像素位)
    PGM支持灰度图形,能够读PBM图形和PGM图形,输出PGM图形
    PPM支持真彩色图形,可以读上面所有格式,输出PPM图形
    PPM图形文件格式:
    包括两个部分,头部分和图象数据部分。头部分由三部分组成,这三部分由回车或换行分割,但PPM的标准中是要求空格。第一行通常是P3或P6,说明是PPM格式;第二行是图象的宽度和高度,用ASCII来表示;最后一部分是描述像素的最大颜色组成,这里允许描述超过一个字节(0-255)的颜色值。另外可以在上面个部分的后面用#来追加注释,注释行是从#到该行末。
    下面是PPM头的例子:
    例子1:
    P6 1024 778 255
    例子2:
    P6
    1024 778
    255
    例子3:
    P6#PPM文件格式
    1024 778#宽度和高度
    # 注释
    255
    PPM图象数据的格式依赖于PPM自身的表示,如果是P3格式,数据将以ASCII文本来表示,每个像素的值从0到前面的最大值,每行不应该长于70个字符,如下:
    例子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

    如果是P6格式,图象数据以字节格式存储,每个色彩成分(r,g,b)一个字节。仅仅在头部的最后一个字段的前面才能
    有注释,在头部的最后一个字段后面通常是一个回车或换行。P6图象文件比P3文件小,读起来更快。注意,P6文件仅仅
    用作但字节彩色。
    但并没有按照格式规约的要求来,通常的习惯,图象从上到下,从左到右被存储。每个像素以一个字节来存储,0表示黑
    色,255表示白色。色彩成分按照通常的红-绿-蓝顺序爱存储。
    PGM
    该格式文件存储灰度图形,也就是这里每个像素使用一个值来表示而不是3个(R,G,B)。同PPM唯一不同的是头部用P2和P5,分别表示用ASCII和字节码来表示数据。
    例如:
    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
    使用ASCII的0或1方式来表示数据,0表示白色,1表示黑色。与PPM、PGM不同的头部是少了第三行,因为第三行的最大色彩值在这个模式下已经没有意义了;如下:
    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
  • 
    

    文件头的这四部分信息都是以ASCII码形式存储的,所以可以直接在将magic number 格式的PGM文件在记事本中打开看到文件头的信息.

    在P2或P5类型的PGM文件头的4个信息之间用分割符分开,PGM的合法分隔符包括:空格,TAB,回车符,换行符.PGM文件头的信息应该由合法分割符号分开。文件头的第4个信息,图像灰度值可能的最大值标明了文件数据部分可能出现的像素灰度值的最大值.上面幅图都是指定的255,所以在数据区的像素数据取值范围在0到255.

    PNM文件的几种不同格式其实都差不多,区别主要是Magic Number的不同和像素值的含义的不同。

    PNM格式

    纯文本格式

    二进制格式

    备注

    PBM

    P1

    P4

    黑白格式: 1或0

    PGM

    P2

    P5

    灰度图片

    PPM

    P3

    P6

    彩色图片

查看全文
  • 相关阅读:
    Implementing Automation Collections
    PSP 2.0降级至1.5详细教程(转)
    Delphi 7 过期的问题
    Delphi读写COM复合文档用户自定义属性参考代码
    十大经典误会
    Office檔案格式(Office文件格式)
    将表格粘贴为Word可识别的格式
    对字符编码与Unicode,ISO 10646,UCS,UTF8,UTF16,GBK,GB2312的理解
    如何识别键盘左右的shift,Ctrl或Alt键
    SRT File Format
  • 原文地址:https://www.cnblogs.com/pang1567/p/4090695.html
  • Copyright © 2011-2022 走看看