dos下的JPG图片的快速显示和保存方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(511,230)、{255,243)、(1279.255)、(1023,268)、(767,281)、(51l,
294)、《255,307)、(1279,319)、(1023.332)、(767,345)、(511,358J、
(255,371)、{1279,383)、(1023,396J、(767,409)、(511,422)、(255。
DOS是一种使用非常普遍的操作系统,直到今天,仍有 很多场合在使用,因此在DOS下显示和保存图片,是一件非 常有意义的事。要在DOS下进行图片的处理,必须进入DOS 的图形模式。DOS的图形模式由VESA显示标准定义,这是 一套通用的DOS图形显示标准,适用于各种型号的显示卡。 本文主要讨论其中的8种模式,如表1所示。
表1 DOS图形显示模式表
模式 640*480 256色模式 800*600 256色模式 1024*768 256色模式 1280"1024 256色模式 640*480 16M色模式 800*600 16M色模式 1024"768 16M色模式 1280*1024 16M色模式
模式号
10lH 103H 105H 107H 112H 115H 118H 1lBH
regs.h.ah=Ox00; regs.h.al--Ox03; ห้องสมุดไป่ตู้nt86(0x10,&regs,&regs);
al中值为0x03,即文本模式号。 进行显存换页,也要调用BIOS中断,如:
r.x.ax=Ox4f05; r.x.bx=O; r.X.dx=page; int86(0xlO,&r,&r);
land C++3.1。
2 VESA显示标准及内存结构 在VESA下,根据水平和垂直能表示的点数和颜色数不
同,分为几十种显示模式。显示器能够显示的每个点都对应 显存中的某个地址。显存在不同的显示模式下,大小是不一 样的。比如要使用1280*1024 16M色模式,就需要 1280"1024"4=5242880个字节的显示内存。显示内存是分页 的,每页有65536个字节,从屏幕左上角开始,一直到屏幕 右下角,每页表示屏幕上的一部分,每满65536个字节就要 换一页,每页首地址都从oxA0000000开始。
对于256色模式,每个点用一个字节表示即可,即该点 的颜色索引号。256色模式下要进行调色,方法为:
outportb(0x3c8,k); outportb(0x3c9,b92); outportb(0x3c9,Io>2); outportb(0x3c9,k>>2); 首先向0x3c8端口输出颜色索引号,然后向0x3c9端口分 别输出红色分量、绿色分鼍、蓝色分量,要注意DOS下红绿 蓝三色值范围是从0-63共“种取值,因此要将原色值右移2 位。即除4。 本文所涉及到的8种显示模式,显示页数和每页的最后 一点座标如表2所示。
80
(1023,12)、p67,25)、(511.38)、(255,51)、(1279,63)、(1023,76)、
(767,89)、(511,102)、(255,115)、(1279,127)、(1023,140)、(767,
153)、(5ll,166)、(255,179)、(1279,191)、(1023.204)、(767,217)、
is SO fast that satisfy the fact use. Key words:JPG;JPEGLIB;VESA;VRAM
l 引言 JPG文件是一种压缩效率很高的图像文件格式,用于保存
真彩色或灰度图片。它使用有损压缩算法对原始图像进行压 缩,也就是说解压后图像与原始图像是有差别的,不过人眼 很难察觉到这种差别,而且经过压缩后图像大小一般只有原 始图像的几十分之一,因此JPG文件在图片处理领域具有很 大的优势。
a)【存放VESA功能号,bx值为0,dx存放页号C扶0开始) 对于真彩色模式,也就是16M色模式,因为我们看到的 每个点,都由红、绿、蓝这三种原始色组合而成,每种原始
一73—
万方数据
电脑编程技巧与维护
色,颜色值从0-255共256种取值,因此可以表示的颜色总数 为256*256*256=16M种。在VESA真彩色模式下,用四个字 节表示一个点。第一字节表示蓝色分馈,第二字节表示绿色分 量。第三字节表示红色分量,第四字节保留,设为0即可。
“jpeglib.h”,还需要libjpeg.1ib这个库文件进行链接。
显示jpg函数名为showjpg,该函数原型如下:
/牛显示jpg图像 left:jPg图像左|二角横座标 top:jPg图像左上角纵座标 jpgfile:jPg文件名 screenmode:显示模式
(1023'652)、(767,665)、15Il,678)、(255,691)、(1279,703)、(1023,
7l 6)、{767,729J、(511,742)、(255,755)、(1279.767)、(1023,780J、
(767,793)、(51I,S06)、(255.819),(1279,831)、(1023,844)、(767, 857)、(5ll,870J、(255,883)、(1279,895)、(1023.908)、(767.921)、
ARTIFICIAL INTELLIGENCE AND IDENTIFICATION TECHNIQUES
人工智能及识别技术
DOS下JPG图片的快速显示和保存方法
江洪 (渤海证券天津云际道营业部,天津30038 1)
摘要:本文提供了在DOS操作系统下JPG图片文件进行快速显示和保存的方法。利用JPEGUB库进行JPG文件 的压缩与解压缩。本程序在DOSVESA显示标准的8种显示模式下开发成功。显示和保存速度很快。已达到实用的 要求。 关键词:JPG;JPEGLIB;VESA;显存
435)、{1279,447)、(1023,460)、(767,473)、(511,48t;1、(255.499)、 (1279,511)、(1023.524)、(767,537)、(51l,550】、(255,563)、(1279.
575)、(1023,588)、(767,601)、(51l,614)、(255.627)、(1279,639J、
A Fast Showing and Saving Method to j pG File in DOS
JIANG Hong (Yunji road Department of Bohai Securities in Tianjin,Tianjin 300381)
Abstract:I introduce a fast method that showing and saving JPG file in DOS.It decompress or compress jpeg file by using JPEGLIB,a free software.This program is realized in eight modes of VESA standard in DOS.The showing and saving speed
对于JPG文件的具体结构,本文不进行详细叙述,只对 JPG图像进行压缩和解压要用到的JPEGuB作一些介绍。 JPEGLIB是一套开放源代码的JPEG开发库,这套库提供了对 JPEG文件进行处理的函数,本文只用到了对JPEG进行压缩 和解压的这两部分功能。
本文收稿日期:2008年9月12日
本文使用的DOS版本号为6.22,使用的开发工具是Bor-
要进入VESA显示模式,需调用BIOS中断,方法如下:
regs.x.ax=Ox4f02; regs.X.bx=OxI lb; int86(0x10,&regs,&regs);
ax存放VESA功能号0x4f02,bx存放VESA显示模式号。 退出图形模式至DOS缺省的文本模式,同样要调用BIOS 中断,方法为:
(5Il,934)、{255,947)、(1279,959)、(1023,972)、(767。985)、(511, 998)、(255,1011)、(1279。1023)
3 JPEGLIB用法及显存读写方法
要使用JPEGUB库,需要提供4个头文件(jpeglib.h、
jerlor.h、jconfig.h、jmorecfg.h),并且要在源程序中include
表2各显示模式下显示页数及页末座标对照表
模式号 lOlH 103H 105H 107H 112H 115H
118H
11BH
娃示页总数 5 8 12 20
19
30
48
每页最后·点廖标
(255,102)、1511.204)、(127.307)、(383.409)、(639.479) (735.81)、(671,163)、(607,245)、(543.327)、(479.409 J、(415. 491)、(351.573)、(799.599) (1023.63)、(1023.127)、f1023.191)、11023,255)、f1023,31 9)、 (1023.383),(1023.447)、(1023,511)、(1023,575)、{1023.639)、 (1023.703)、(1023。7671 (255.51)、(51 l,102)、(767,153)、(1023,204).{1279255)、(255, 307)、(511.358)、(767,409)、(1023.460)、(1279t51 1)、(255,563)、 (511,614J,(767,665).(1023.716)、(1279,767)、(255,819)、(511, 870)、(767.921)、(1023,972)、(1279,1023) (383.25)、(127,51)、(51I.76J、(255,102)、(639,127)、(383,153)、 (127.179)、(511,204)、(255’230)、《639.255)、(383。281)、{127. 307)、(511,332)、{255,358)、(639.383)、(383.409)、(127,435)、 (51I,460)、(639.479) (383,20)、(767.40J、(35I,61)、f735.81)、(319.102)、(703。122)、 (287,143),(671.163)、【255,184)、(639204)、(223,225)、(607, 245)、【191,266)、f575,286)、(159.307)、(543,327)、{127。348)、 (511,368)、(95,389)、(479,409)、(63,430)、(447,450)、(31,471)、 (415,491)、r799,511)、(383,532)、(767,552)、(351,573)、(735, 593)、(799,599) (1023,15)、(1023,3i)、(1023.47)、(1023.63)、(1023.79)、(1023, 95)、(1023.1l 1)、(1023,127)、(1023,143)、(1023,159)、(1023. 175)、(1023.191)、(1023,207)、(1023,223)、(1023,239)、(1023。 255)、(1023.271)、(1023.287)、(1023.303)、(1023,31 9J、(1023, 335)、(1023,351)、(1023,367)、(1023,383)、(1023,399)、(1023. 41 5)、(1023.431)、(1023,447)、(1023.463)、(1023.479J、(1023, 495)、{1023,511)、(1023,527)、(1023'543)、(1023,559)、(1023. 575)、(1023.591)、(1023,607)、(1023,623)、(1023,639)、(1023, 655)、(1023.671)、(1023.687)、(1023,703)、(1023,71 9)、(1023, 735)、(1023,7511、(1023.767)