正在加载图片...
PCX文件最早是 PC Paintbrush软件所采用的一种文件格式,由于压缩比不高,现在用的并 不是很多了。它也是由头信息、调色板、实际的图象数据三个部分组成。其中头信息的结构 为: typedef struct! char version char bits per pixel WORD xmin, ymin, WORD Xmax, ymax; WORD hres char palette[ 48] char colour planes WORD palette type char filler[] i PCXHEAD 其中值得注意的是以下几个数据: manufacturer为PCX文件的标识,必须为0x0a;xmin为 最小的x坐标,xmax最大的x坐标,所以图象的宽度为xmax-xmin+1,同样图象的高度为 ymax-yIn+1; bytes per line为每个编码行所占的字节数,下面将详细介绍。 PCX的调色板在文件的最后。以256色PCX文件为例,倒数第769个字节为颜色数的标识 256时该字节必须为12,剩下的768(256×3)为调色板的RGB值 为了叙述方便,我们针对256色PCX文件,介绍一下它的解码过程。编码是解码的逆过程 有兴趣的读者可以试着自己来完成 解码是以行为单位的,该行所占的字节数由 bytes per line给定。为此,我们开一个大小为 bytes per line的解码缓冲区。一开始,将缓冲区的所有内容清零。从文件中读出一个字节C 若C>0xc0,说明是行程( Run length)信息,即C的低6位表示后面连续的字节个数(所以最 多63个连续颜色相同的象素,若还有颜色相同的象素,将在下一个行程处理),文件的下 个字节就是实际的图象数据(即该颜色在调色板中的索引值)。若C<0xc0,则表示C是实际 的图象数据。如此反复,直到这 bytes per_line个字节处理完,这一行的解码完成。PCX就 是有若干个这样的解码行组成 下面是实现256色PCX文件解码的源程序,其中第二个函数对一行进行解码,应该把阅读 的重点放在这个函数上。要注意的是,执行时文件 C: test. pcx必须存在,而且是一个256 色PCX文件 PcxBytesPerline BOOL LoadPcx File(HWND hWnd, char *PcxFileName)PCX 文件最早是 PC Paintbrush 软件所采用的一种文件格式,由于压缩比不高,现在用的并 不是很多了。它也是由头信息、调色板、实际的图象数据三个部分组成。其中头信息的结构 为: typedef struct{ char manufacturer; char version; char encoding; char bits_per_pixel; WORD xmin,ymin; WORD xmax,ymax; WORD hres; WORD vres; char palette[48]; char reserved; char colour_planes; WORD bytes_per_line; WORD palette_type; char filler[58]; } PCXHEAD; 其中值得注意的是以下几个数据:manufacturer 为 PCX 文件的标识,必须为 0x0a;xmin 为 最小的 x 坐标,xmax 最大的 x 坐标,所以图象的宽度为 xmax-xmin+1,同样图象的高度为 ymax-yin+1;bytes_per_line 为每个编码行所占的字节数,下面将详细介绍。 PCX 的调色板在文件的最后。以 256 色 PCX 文件为例,倒数第 769 个字节为颜色数的标识, 256 时该字节必须为 12,剩下的 768(256×3)为调色板的 RGB 值。 为了叙述方便,我们针对 256 色 PCX 文件,介绍一下它的解码过程。编码是解码的逆过程, 有兴趣的读者可以试着自己来完成。 解码是以行为单位的,该行所占的字节数由 bytes_per_line 给定。为此,我们开一个大小为 bytes_per_line 的解码缓冲区。一开始,将缓冲区的所有内容清零。从文件中读出一个字节 C, 若 C>0xc0,说明是行程(Run Length)信息,即 C 的低 6 位表示后面连续的字节个数(所以最 多 63 个连续颜色相同的象素,若还有颜色相同的象素,将在下一个行程处理),文件的下一 个字节就是实际的图象数据(即该颜色在调色板中的索引值)。若 C<0xc0,则表示 C 是实际 的图象数据。如此反复,直到这 bytes_per_line 个字节处理完,这一行的解码完成。PCX 就 是有若干个这样的解码行组成。 下面是实现 256 色 PCX 文件解码的源程序,其中第二个函数对一行进行解码,应该把阅读 的重点放在这个函数上。要注意的是,执行时文件 C:\\test.pcx 必须存在,而且是一个 256 色 PCX 文件。 unsigned int PcxBytesPerLine; BOOL LoadPcxFile (HWND hWnd,char *PcxFileName)
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有