重点了解PPM格式

纷繁复杂的概念

对于图像,很多概念性没有完全弄明白,看到RGB24 ,RGB32,光栅,对比度,一下子懵了。如果有如下的列表,惊呆了!!

typedef pixfmt_gray8_base<1, 0>pixfmt_gray8;

typedef pixfmt_gray8_base<3, 0>pixfmt_gray8_rgb24r;

typedef pixfmt_gray8_base<3, 1>pixfmt_gray8_rgb24g;

typedef pixfmt_gray8_base<3, 2>pixfmt_gray8_rgb24b;

typedef pixfmt_gray8_base<3, 2>pixfmt_gray8_bgr24r;

typedef pixfmt_gray8_base<3, 1>pixfmt_gray8_bgr24g;

typedef pixfmt_gray8_base<3, 0>pixfmt_gray8_bgr24b;

typedef pixfmt_gray8_base<4, 0>pixfmt_gray8_rgba32r;

typedef pixfmt_gray8_base<4, 1>pixfmt_gray8_rgba32g;

typedef pixfmt_gray8_base<4, 2>pixfmt_gray8_rgba32b;

typedef pixfmt_gray8_base<4, 3>pixfmt_gray8_rgba32a;

typedef pixfmt_gray8_base<4, 1>pixfmt_gray8_argb32r;

typedef pixfmt_gray8_base<4, 2>pixfmt_gray8_argb32g;

typedef pixfmt_gray8_base<4, 3>pixfmt_gray8_argb32b;

typedef pixfmt_gray8_base<4, 0>pixfmt_gray8_argb32a;

typedef pixfmt_gray8_base<4, 2>pixfmt_gray8_bgra32r;

typedef pixfmt_gray8_base<4, 1>pixfmt_gray8_bgra32g;

typedef pixfmt_gray8_base<4, 0>pixfmt_gray8_bgra32b;

typedef pixfmt_gray8_base<4, 3>pixfmt_gray8_bgra32a;

typedef pixfmt_gray8_base<4, 3>pixfmt_gray8_abgr32r;

typedef pixfmt_gray8_base<4, 2>pixfmt_gray8_abgr32g;

typedef pixfmt_gray8_base<4, 1>pixfmt_gray8_abgr32b;

typedef pixfmt_gray8_base<4, 0>pixfmt_gray8_abgr32a;

图片格式也有很多种: bmp,gif ,jpg,还有现在的ppm,闻所未闻!!

化繁为简

在整个学习的过程中,我们所有的操作都是针对ppm格式的图片,这种图片的一个特点就是格式简单,不会涉及到太多的结构体,并且操作方便。除了头部表明格式,然后就是图片的长宽,最后就是所有像素点的RGB值,每一个像素点都有三个分量,分别是R,G,B,我们可以知道图片的长宽分别为width,height,就可以申请一个数组

char[width * height * 3] ,保存所有的像素点的颜***况,如果你想设置某一点的颜色值,比如是(x,y,就可以轻松的获取到该点的位置,然后修改.

如下是PPM的简介,先看看吧!!

PPM图像格式(Portable Pixelmap)

  一种linux图片格式,可用ACDSEE批量转变。它是一种简单的图像格式,仅包含格式、图像宽高、bit数等信息和图像数据。

  图像数据的保存格式可以用ASCII码,也可用二进制,下面列举ppm格式中比较简单的一种:24位彩色、二进制保存的图像。

  文件头+rgb数据:

P6\n

width height\n

255\n

rgbrgb...

  其中P6表示ppm的这种格式;\n表示换行符;widthheight表示图像的宽高,用空格隔开;255表示每个颜色分量的最大值;rgb数据从上到下,从左到右排放。

刚开始的时候我是使用爱奇艺播放器也可以直接打开PPM文件,后来使用的是ppmviewer工具。


你可能感兴趣的:(agg,PPM)