标题：pcx
简介
PCX格式是ZSOFT公司在开发图像处理软件Paintbrush时开发的一种格式，基于PC的绘图程序的专用格式，一般的桌面排版、图形艺术和视频捕获软件都支持这种格式。PCX支持256色调色板或全24位的RGB，图像大小最多达64K*64K像素。不支持CMYK或HSI颜色模式，photoshop等多种图像处理软件均支持PCX格式。 PCX压缩属于无损压缩。
PCX这种图像文件的形成是有一个发展过程的。最先的PCX雏形是出现在ZSOFT公司推出的名叫PC PAINBRUSH的用于绘画的商业软件包中。以后，微软公司将其移植到 Windows环境中，成为Windows系统中一个子功能。先在微软的Windows3．1中广泛应用，随着Windows的流行、升级，加之其强大的图像处理能力，使PCX同GIF、TIFF、BMP图像文件格式一起，被越来越多的图形图像软件工具所支持，也越来越得到人们的重视。 
PCX是最早支持彩色图像的一种文件格式，现在最高可以支持256种彩色。PCX设计者很有眼光地超前引入了彩色图像文件格式，使之成为现在非常流行的图像文件格式。 
PCX图像文件由文件头和实际图像数据构成。文件头由128字节组成，描述版本信息和图像显示设备的横向、纵向分辨率，以及调色板等信息：在实际图像数据中，表示图像数据类型和彩色类型。PCX图像文件中的数据都是用PCXREL技术压缩后的图像数据。 
PCX是PC机画笔的图像文件格式。PCX的图像深度可选为l、4、8bit。由于这种文件格式出现较早，它不支持真彩色。PCX文件采用RLE行程编码，文件体中存放的是压缩后的图像数据。因此，将采集到的图像数据写成PCX文件格式时，要对其进行RLE编码：而读取一个PCX文件时首先要对其进行RLE解码，才能进一步显示和处理。 
PCX是Zsoft公司研制的一种常用图像格式，也是在PC机上使用时间最久的一种位图格式。PCX的最新版本支持24位色彩（256色的调色板或全24位RGB），图像的大小可达64k×64k个像素。PCX采用游程长度编码来压缩数据，但是有些情况下压缩效率不高，尤其是对于扫描图像或视频图像。PCX存在许多的版本，其文件头中的一个代码标识了文件所支持的Zsoft产品版本，不同版本的图像特点如表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色图像以及多平面真彩色图像文件结构及文件头PCX图像由3个部分组成，即文件头、位图数据和一个多达256种色彩的调色板。PCX文件的文件头为固定的128字节。其中包含版本号、被打印或扫描图像的分辨率（单位为每英寸点数）、大小（单位为像素数）、每扫描行字节数、每像素位数和彩色平面数等信息。文件还可能包括一个调色板以及表明该调色板是灰度还是彩色的一个代码。文件的核心部分是位图数据。位图数据以类似于Packbits压缩法的游程长度压缩形式记录，像素值通常是单字节的索引值，指向调色板中的位置。如果版本号为5，则文件末尾处还有一个单一的位平面和一个RGB值的256色调色板，3种原色各占1个字节。
PCX文件头结构起始字节字节数内容解释01Zsoft标志10（0x0a），Zsoft PCX文件的标志11版本号0：PC Paintbrush 2.51：PC Paintbrush 2.8，带调色板21编码1：PCX游程长度编码31位/像素每个平面的位/像素值，可能值为1、2，、4或848图像大小图像边界极限为Xmin、Ymin、Xmax、Ymax，以像素为单位122水平分辨率打印时，X方向的每英寸点数142垂直分辨率打印时，Y方向的每英寸点数1648文件头调色板16色的“EGA/VGA”头调色板641保留字节Zsoft保留，为0651平面彩色/灰度平面数。PCX图像可以是单彩色，也可以具有多个彩色平面662每行字节数每个色彩平面的每行字节数，即存储未压缩图像的一个扫描行所需的字节数，总是偶数682调色板解释1：彩色或黑白
2：灰度702视频屏幕大小X视频输出的水平像素数-1722视频屏幕大小Y视频输出的垂直像素数-17454全空直到文件结束0对PCX进行解码的关键因为在一个PCX文件中可以用到几种不同的记录方法，因此其中必须包含所用方法的标志。在对PCX进行解释时，单靠读取版本号是不够的，最可靠的标志是每像素的位数（文件头的第3个字节）和色彩平面数（文件头的第65个字节），这两个标志与图像色彩数的对应关系如表1.3所示。
PCX数据的解释每像素的位数色彩平面数解释11单色124色138色1416色214色2416色4116色81256色8316.7兆色平面数说明是否使用了调色板。多于一个平面则没有调色板。如果使用了调色板，则可以由版本号和每像素位数决定PCX图像所使用的调色板类型。
PCX图像数据存储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个重复单元为一组进行压缩的，不论要记录的是何种类型的数据，都使用同样的游程长度压缩算法。在扫描行中有编码间隔标志，但是，在一个扫描行中的色彩平面之间没有间隔标志。同样，也没有分隔符来标识一个扫描行结束。
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个位平面。