计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

DOS真彩色模式下真彩色图像显示技术毕业(2)

2015-06-03 01:35
导读:三、24位PCX图像格式简介 24位PCX图像的文件头同16色、256色的一样,共128字节, 其中每个像素所用的彩色位数(bit-perpixel)值为8,彩色平面数(color-planes)值为3, 不

三、24位PCX图像格式简介
24位PCX图像的文件头同16色、256色的一样,共128字节, 其中每个像素所用的彩色位数(bit-perpixel)值为8,彩色平面数(color-planes)值为3, 不再使用调色板。24位PCX图像数据的存储仍采用有限行程压缩法,但却是把单个的RGB行作为三个位平面数据分别进行压缩存放,第一个位平面由该行所有红色像素组成;第二个位平面由该行所有绿色像素组成;第三个位平面由该行所有蓝色像素组成,因为行程编码方法并不是总能减小24位复杂图像的大小,所以对24位PCX 文件进行解码得到的结果图像比原来的小也属正常。本文所用24 位PCX 文件格式符合PCPaintbrush Version 5标准,是从Photo Styler 1.0的TIF图例转换的。
将上述解压缩的数据用于显示时,需按显示卡硬件高、真彩色DAC送色彩信号的顺序--红绿蓝红绿蓝......--重新组织,才能正确地显示24位真彩色图像。这一点是最不同于其他用三字节行程编码的24位RGB真彩色图像(如24位TGA)。其它格式24位的真彩色图像文件只是图像头处理及解压数据的方式不同,显示的原理则完全相同。文后所附例程作适当改变,就可用于24位TIF、24位BMP、24位TGA 等图像文件的显示。
下面就640X480分辨率介绍32K、64K高彩色、16M真彩色模式显示24位PCX图像。

四、32K、64K高彩色仿真16M真彩色编程
现成的64K色图像很少,彩色扫描仪扫出的多为256色或24位真彩色, 许多图像处理软件包的图例也是同样情形。这里只好用24位真彩色图像经下述图示过程的位移合并,做成16位的64K高彩色像素字。这种取24位RGB分量高位的方法仿真显示真彩色图像,明亮部分的色彩层次能较好还原,低暗部分的色彩层次有微小损失,仿真效果很好。读者也可根据需要作其他位的取舍(如舍两头留中间),以使色彩还原最小失真。

图示中的空格为零。32K 高彩色仿真与此类似,只需将绿色分量也右移3位,与红色、蓝色分量一道做成最高位为零,低15位有效的一个字,送视频缓冲区便可。 (科教作文网http://zw.ΝsΕAc.Com编辑整理)
具体编程要点如下:

1.调用VESA BIOS 4f02H 号功能置高彩色图形模式,成功后调用VESA BIOS4f01H号功能返回每线字节数Line-bytes及窗口页粒度Wingran等重要参数;

2.读图像头后直接读图像数据,按上述方法转换为一16位字后送视频缓冲区始址A000:0000,每一像素一个字,每送一个字到视频缓冲区,地址偏移量加2;

3.640×480分辨率下每根扫描线需1280字节,为提高显示速度,由Line-bytes预先算出每根扫描线始址存于addr数组备查,由于满屏需600K字节,故编程上仍需考虑切换VRAM页的情况。例程根据各种卡不同模式的窗口页粒度Wingran值,调用VESA BIOS 4f05H号功能访问硬件分页寄存器实现64K页模式切换(此时仍有一根扫描线跨两页的情形);

4.显示完毕,调用VESA BIOS 4f02H 号功能置模式03H恢复原文本模式。

五、16M真彩色编程
真彩色编程的关键是要了解图像数据的存放顺序及解压方法,其次注意读图像数据后按顺序要求作转换,否则图像色彩失真。其余过程同高彩色模式。
具体编程要点如下:

1.调用VESA BIOS 4F02H号中断置真彩色图形模式;成功后调用VESA BIOS4F01H号功能,返回每线字节数Line-bytes及窗口页粒度Wingran等重要参数;

2.读图像文件头后直接读图像数据,解压缩后按红绿蓝顺序送视频缓冲区始址A000:0000,每一像素三字节,每送一像素到视频缓冲区,地址偏移量加3;

3.在VESA 112H模式(640×480 16.7M Color)下,不同显示适配卡的每线字节数是不一样的, 如ARK2000PV 为1920, GD5434及TGUI9440为2048,S3 86C868为2560, 但由于使用VESA编程, 4F01H号功能能准确返回每线字节Line-bytes 值, 并预先算出每条扫描线始址存于addr数组,可提高显示速度,由于满屏需900K以上字节,故编程上仍需考虑切换VRAM页的情况,换页机制同64K色情形;

4.有些装2M VRAM的适配卡, 可在640×480 16.7M色情况下使用32位快速格式,如S3 86C868的112H模式及GD5434的76H模式, 每线字节为2560, 此时解压缩后按红绿蓝及一零字节顺序送视频缓冲区始址 A000:0000,每一像素4字节,每送一像素到视频缓冲区,地址偏移量加4,类似特殊情况,例程照此稍作修改便可;

5.显示完毕,调用VESA BIOS 4F02H号功能置模式03H,恢复原文本模式。

六、示范程序

(科教范文网http://fw.nseac.com)

以上两种编程实现见所附例程,程序在有ISA/VESA/PCI三种总线插槽的 OctekHippo12型主板、AMD DX4/100 CPU、8M RAM、EMC1024×768、28隔行扫描彩色显示器、Cirrus GD5434(2M VRAM)显示卡、Borland C++ 3.1 Small 模式下编译通过。但执行程序并不依赖所编译的硬件环境, 曾经在装有 1M VRAM 的TGUI9440、TGUI9680、ARK2000PV、S3 86C868 等VESA局部总线、PCI局部总线、甚至ISA总线的TVGA8900D(也支持VESA 1.2标准, 1M以下的OEM模式号同TGUI9440)显示卡的486~586各档PC机的DOS环境下均获通过。

上一篇:DOS下DSP播音的编程毕业论文 下一篇:没有了