PCX编码

王朝百科·作者佚名  2011-03-02  
宽屏版  字体: |||超大  

PCX是Zsoft公司研制的一种常用图像格式,也是在PC机上使用时间最久的一种位图格式。PCX的最新版本支持24位色彩(256色的调色板或全24位RGB),图像的大小可达64k×64k个像素。PCX采用游程长度编码来压缩数据,但是有些情况下压缩效率不高,尤其是对于扫描图像或视频图像。PCX存在许多的版本,其文件头中的一个代码标识了文件所支持的Zsoft产品版本,不同版本的图像特点如表1.1所示。

表1.1 不同PCX版本的图像特点

版本号

图像特点

0

基本的单色(2色)或4色图像

1

基本的单色(2色)或4色图像,另加16位色图像

2

基本的单色(2色)或4色图像,另加24位调色板的256色以及全24位RGB色图像

3

基本的单色(2色)或4色图像,

4

基本的单色(2色)或4色图像

5

基本的单色(2色)或4色、256色图像以及多平面真彩色图像

1. 文件结构及文件头PCX图像由3个部分组成,即文件头、位图数据和一个多达256种色彩的调色板。PCX文件的文件头为固定的128字节。其中包含版本号、被打印或扫描图像的分辨率(单位为每英寸点数)、大小(单位为像素数)、每扫描行字节数、每像素位数和彩色平面数等信息。文件还可能包括一个调色板以及表明该调色板是灰度还是彩色的一个代码。文件的核心部分是位图数据。位图数据以类似于Packbits压缩法的游程长度压缩形式记录,像素值通常是单字节的索引值,指向调色板中的位置。如果版本号为5,则文件末尾处还有一个单一的位平面和一个RGB值的256色调色板,3种原色各占1个字节。

PCX格式图像的文件头结构如表1.2所示。

表1.2 PCX文件头结构

起始字节

字节数

内容

解释

0

1

Zsoft标志

10(0x0a),Zsoft PCX文件的标志

1

1

版本号

0:PC Paintbrush 2.51:PC Paintbrush 2.8,带调色板

2

1

编码

1:PCX游程长度编码

3

1

位/像素

每个平面的位/像素值,可能值为1、2,、4或8

4

8

图像大小

图像边界极限为Xmin、Ymin、Xmax、Ymax,以像素为单位

12

2

水平分辨率

打印时,X方向的每英寸点数

14

2

垂直分辨率

打印时,Y方向的每英寸点数

16

48

文件头调色板

16色的“EGA/VGA”头调色板

64

1

保留字节

Zsoft保留,为0

65

1

平面

彩色/灰度平面数。PCX图像可以是单彩色,也可以具有多个彩色平面

66

2

每行字节数

每个色彩平面的每行字节数,即存储未压缩图像的一个扫描行所需的字节数,总是偶数

68

2

调色板解释

1:彩色或黑白

2:灰度

70

2

视频屏幕大小X

视频输出的水平像素数-1

72

2

视频屏幕大小Y

视频输出的垂直像素数-1

74

54

全空直到文件结束

0

2. 对PCX进行解码的关键因为在一个PCX文件中可以用到几种不同的记录方法,因此其中必须包含所用方法的标志。在对PCX进行解释时,单靠读取版本号是不够的,最可靠的标志是每像素的位数(文件头的第3个字节)和色彩平面数(文件头的第65个字节),这两个标志与图像色彩数的对应关系如表1.3所示。

表1.3 PCX数据的解释

每像素的位数

色彩平面数

解释

1

1

单色

1

2

4色

1

3

8色

1

4

16色

2

1

4色

2

4

16色

4

1

16色

8

1

256色

8

3

16.7兆色

平面数说明是否使用了调色板。多于一个平面则没有调色板。如果使用了调色板,则可以由版本号和每像素位数决定PCX图像所使用的调色板类型。

3. PCX图像数据的存储如果没有使用调色板,则数据是实际的像素值;否则是调色板表项的索引值。当是实际的像素值时,它们按色彩平面和扫描行存储。其存储格式为:

第0行 RRRRRR…GGGGGG…BBBBBB…

第1行 RRRRRR…GGGGGG…BBBBBB…

┇ ┇

第n行 RRRRRR…GGGGGG…BBBBBB…

如果有两个平面,那么色彩是任选的;如果有3个平面,其颜色为RGB;如果有4个平面,则颜色信息包含RGB和光强。光强位只是给像素一种名义上的较高亮度。

当使用调色板时,数据指调色板的索引值,它们构成一个完整的图像平面,即不会被分解为单独的色彩平面。数据将按如下的简单方式排列(i是调色板中的索引值):

第0行 iiiiiiiiiiiii…

第1行 iiiiiiiiiiiii…

┇ ┇

第n行 iiiiiiiiiiiii…

i的长度取决于每像素的位数,如每像素位数为4,则i就是半个字节长。

PCX的编码是以最大64个重复单元为一组进行压缩的,不论要记录的是何种类型的数据,都使用同样的游程长度压缩算法。在扫描行中有编码间隔标志,但是,在一个扫描行中的色彩平面之间没有间隔标志。同样,也没有分隔符来标识一个扫描行结束。

4. PCX图像的调色板任何PCX文件,如果像素位数超过1但又只有一个色彩平面,则都需要使用调色板。PCX图像由3种不同的调色板实现。版本代码为5的文件最容易确认。如果有一个色彩平面,则它们会在文件结尾处使用256色的“VGA”调色板。其他的基于调色板的文件均使用头调色板,而头调色板又有两种可能的实现,即EGA和CGA。三种不同的调色板介绍如下。

(1)位于文件末尾的256色“VGA”调色板256色的调色板从文件末尾(EOF)前768个字节开始,而且以十进制码12(十六进制0C)开始(768=256×1字节×3,每个R、G和B都是1个字节)。因此,值为n的像素指向调色板中的“EOF-768+3×n”处;后面3个字节分别为该像素红、绿、蓝的值。

(2)16色的“EGA/VGA”头调色板头调色板位于第16~第63字节,共48个字节,数据按3元组组织,具有16组3字节数据,每个字节分别对应R、G和B。对于为EGA建立的文件,每种原色只可以有4级,所以每个字节提供的256个值的范围被分成4个区域。每个区域与相应的级相对应:063对应第0级、64~127对应第1级、128~192对应第2级、193~254对应第3级。

(3)“CGA”调色板这种调色板现已过时,在PCX的版本5及更高的版本中不再使用。这中方法只需要字节16和字节19的最高位数据。

另外,版本5或更高版本的PCX文件能够支持24位真彩色的PCX文件,其色彩平面为3个位平面。

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有