基于MFC的图片浏览器的设计及其工具软件的实现要点Word文档格式.docx
- 文档编号:20847575
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:80
- 大小:572.47KB
基于MFC的图片浏览器的设计及其工具软件的实现要点Word文档格式.docx
《基于MFC的图片浏览器的设计及其工具软件的实现要点Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于MFC的图片浏览器的设计及其工具软件的实现要点Word文档格式.docx(80页珍藏版)》请在冰豆网上搜索。
2.2C++在运行效率上的优势8
2.3MFC和Win32API在图形处理上的优势8
第三章图像格式分析10
3.1BMP图像10
3.1.1BMP文件头11
3.1.2BMP位图信息头12
3.1.3颜色表13
3.2PCX图像14
3.2.1文件结构及文件头14
3.2.2对PCX进行解码的关键16
3.2.3PCX图像数据的存储17
3.2.4PCX图像的调色板18
3.3JPEG图像19
3.4GIF图像20
3.4.1文件头21
3.4.2GIF数据流22
3.4.3GIF文件结尾24
第四章系统的设计与实现26
4.1需求分析26
4.1.1功能需求26
4.1.2性能需求27
4.2总体设计27
4.2.1核心功能构思28
4.2.2程序执行步骤29
4.2.3软件模块设计30
4.2.4软件界面设计31
4.3详细设计36
4.3.1软件核心数据结构LanImage类37
4.3.2文档类CPictViewDoc37
4.3.3视图类CPictViewView38
4.3.4主框架类CMainFrame38
4.3.5文件打开和保存38
4.3.6BMP解码/编码模块40
4.3.7PCX解码/编码模块41
4.3.8JPEG、GIF解码/编码模块42
4.3.9图像显示模块43
4.3.10图像浏览模块44
4.3.11全屏浏览模块45
4.3.12图像缩放模块45
4.3.13图像旋转模块46
4.4辅助功能设计50
4.4.1状态栏显示模块50
4.4.2右键弹出菜单51
4.4.3调用Windows画图板打开图片51
4.4.4调用系统默认程序打开图片51
4.4.5ESC退出全屏模式52
4.4.6删除当前图片52
第五章软件测试与改进总结54
5.1软件测试54
5.2改进思想54
第六章结论56
致谢57
参考文献58
附录A59
附录B61
附录C62
附录D65
附录E67
附录F68
附录G71
附录H73
附录I74
附录J77
附录K78
附录L79
附录M83
第一章绪论
1.1图片浏览器及其工具软件的发展概述
图片文件是当今计算机系统中的一种重要的文件。
图片浏览器是我们常常使用的软件工具。
我们可以使用图片浏览器方便地查看各种流行格式的图片。
在电子计算机还未普及的时代,人们获取静态的图像信息主要通过照片。
那时使用电子计算机的多为专业技术人员,但也需要处理图像数据,这就要求人们通过计算机编程来操作图像显示到屏幕上去。
虽然那时只使用很少的颜色,并且没有高度可视化的界面,但图片浏览器的雏形已经浮现。
图片浏览器所需要的核心功能——图像显示已经被设计出来。
随着科学技术的发展,电子计算机开始大量普及,个人计算机变为电子计算机使用的主流。
为了满足人们的需求,各种格式的图片文件应运而生。
它们可以作为计算机能识别的二进制文件被计算机读取然后显示出来。
真正的图片浏览器就出现了。
图像浏览的关键在于理解图片的解码格式。
这主要表现为图像压缩技术。
人们可以获得图片的途径越来越多,比如通过数码相机生成数码照片,通过扫描设备把图像保存成图片文件。
人们开始需要对图片进行一些修改。
在工程和科学领域一直以来都需要处理大量的图片数据。
可以处理图片数据的工具软件就可以满足这样的需求。
一般的功能包括图片的缩放、转置、旋转、平移等变换。
图像变换是在图像解码和编码的基础上运用数学的方法有规则地改变图像的数据。
1.2数字图像
1.2.1信息和数字图像
当今社会已经进入到了信息时代。
而电子计算机是这个时代最具代表性的产物。
电子计算机的出现大大地改变了人们生活、学习、工作的方式,关键的原因在于电子计算机改变了人们记录信息和传递信息的方式。
在电子计算机还未出现之前,人们主要把信息记录在纸质或与其类似的介质上面。
使用纸张的好处是:
只要不出现介质本身的遗失或者损坏,信息可以长久保存。
因为介质和信息在被记录的那一瞬间就天然地连为一体了。
但是使用计算机技术记录的信息,可能因为各种轻微的原因就遗失了。
比如突然的断电,强烈的震动,靠近强磁场。
而且由于电磁物质本身的效应,就算我们很完好地保护介质,其上的信息能够保存的年数也只是10的一次方的数量级。
但是电子计算机技术能够给我们提供的好处太多,以至它的缺点对于我们已经不是问题。
使用电子计算机,我们可以用数学的方法方便地处理信息,因为信息都被编码成了01代码,可以数学化地表示;
我们可以高速并自动化地对信息重复操作,以实现大规模的信息变换;
我们可以使用很小的介质存储很大的数据量;
我们还可以方便地传递信息,方便地增删信息和修改信息。
简单来说,对于静止的图像数据我们要处理的就是已编码的颜色信息。
在计算机图形学中,图像信息数据的类型被分为两个主要种类:
矢量和位图。
矢量图像是指仅通过存储关键点来表达线条、曲线和形体的方法。
这些关键点足以对形体进行定义,而将它变成图像的过程称之为渲染。
当图像被渲染之后,它可以被认为是位图格式,其中每一个像素都具有与之相关的特定值。
位图图像(也称之为光栅图像)可由图像模型I(r,c)来表示,其中包含像素数据以及某些文件格式存储的相应的亮度值。
尽管有些文件被压缩,但仍属于位图图像的范畴,通常这些类型的图像包含头信息和原始图像数据。
文件头必须包含的信息为:
(1)行数(高);
(2)列数(宽);
(3)每像素位数;
(4)文件类型。
此外,对于某些复杂的文件格式,文件头还必须包含有关所使用的压缩类型的信息,以及创建图像所需要的其他必要的参数。
本毕业设计所讨论和处理的图像均为位图图像。
1.2.2数字图像处理
数字图像处理(digitalimageprocessing)是用计算机对图像信息进行处理的一门技术,使利用计算机对图像进行各种处理的技术和方法。
作为一个图片浏览器以及工具软件,就要进行一些列的数字图像处理以满足设计的需要。
对于一个图片浏览器来说,主要应用了数字图像处理的下列技术:
(1)图像变换。
由于图像阵列很大,直接在空间域中进行处理,涉及计算量很大。
因此,往往采用各种图像变换的方法,如傅立叶变换、沃尔什变换、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可减少计算量,而且可获得更有效的处理(如傅立叶变换可在频域中进行数字滤波处理)。
目前新兴研究的小波变换在时域和频域中都具有良好的局部化特性,它在图像处理中也有着广泛而有效的应用。
(2)图像编码。
压缩图像编码压缩技术可减少描述图像的数据量(即比特数),以便节省图像传输、处理时间和减少所占用的存储器容量。
压缩可以在不失真的前提下获得,也可以在允许的失真条件下进行。
编码是压缩技术中最重要的方法,它在图像处理技术中是发展最早且比较成熟的技术。
(3)图像增强和复原。
图像增强和复原的目的是为了提高图像的质量,如去除噪声,提高图像的清晰度等。
图像增强不考虑图像降质的原因,突出图像中所感兴趣的部分。
如强化图像高频分量,可使图像中物体轮廓清晰,细节明显;
如强化低频分量可减少图像中噪声影响。
图像复原要求对图像降质的原因有一定的了解,一般讲应根据降质过程建立"
降质模型"
,再采用某种滤波方法,恢复或重建原来的图像。
1.2.3图像的编码和解码
图像的编码是数字图像处理中很重要的一部分。
图像的编码主要是为了压缩图像。
能够对数据进行压缩并大大减少其数据量是因为数据存在大量的数据冗余,即存在冗余的、可预测的和不必要的数据。
数据量(D)与其所表达的信息量(I)一般并不相等,它们之间存在式(1-1)的关系:
I=D-du式(1-1)
du≥0
其中,du代表数据的冗余量,如冗余量du=0,则不需要也不能对数据进行有效压缩。
即,需要并能够对数据进行有效压缩的条件是du>
0。
而图像数据中广泛存在着数据冗余。
数据冗余一般有4种形式,即统计冗余、信息熵冗余、结构冗余、知识冗余。
利用冗余进行图像数据压缩包括两个相反的过程。
数据编码:
即对原始图像数据进行编码,以减小其数据量。
数据解码:
即把编码压缩的图像数据还原成原始的表示形式。
由于数据编码和数据解码是互逆的过程,只要研究好数据编码就能处理好数据解码。
根据冗余类型的不同,人们提出了不同的数据编码方法,根据不同的出发点可把数据编码方法进行不同的分类。
(1)以对编码数据在解码后能否完全一致的还原为原始数据为标准,可将数据编码方法划分为如下两类。
无失真编码(可逆编码):
编码数据进行解码后的数据与编码前的原始数据完全相同,没有任何失真。
有失真编码(不可逆编码):
编码数据进行解码后的数据与编码前的数据有一定的偏差或失真,但在视觉效果上基本相同。
(2)根据数据编码的实现原理可以把数据编码划分为预测编码、变换编码、信息熵编码、亚抽样与内插编码、矢量量化编码、基于神经网络的编码、分频带编码、结构编码、基于知识的编码和混合编码等10类。
其中,信息熵编码中的哈夫曼编码(HuffmanCoding)、LZW(LempelZivWelchCompression)编码、游程长度编码(RunLengthCoding)和算术编码(ArithmeticCoding)都是常用的无失真图像编码方式。
鉴于数字图像自身的特点,对其进行处理也不是一步就能完成的过程。
可将它分成诸多步骤,必须一个接一个地执行这些步骤,直到提取出有用的数据。
而这些步骤中,数据的存储、表示又占有相当重要的地位,可以说,这是图像处理中最基本的技术。
因此,掌握不同格式图像的编码解码、读写、显示等方法是必不可少的。
为什么会需要如此众多不同类型的图像文件格式呢?
简单的回答就是因为有太多不同类型的图像以及众多不同需求的应用。
完整一些的回答还要考虑到市场份额、所有权以及在图像工业中缺乏的必要协调。
但是,已经有一些标准的文件格式被开发出来。
许多其他图像类型可以通过图像转换软件很容易地转换成这些文件格式,如本毕业设计最终开发出的软件就可以将图像在BMP、PCX、GIF及JPEG之间互相转换。
1.3图像处理工具的发展现状
目前主流的图片浏览器和图片工具软件有如下几种:
(1)ACDsee
ACDSee(奥视迪)是目前非常流行的看图工具之一.它提供了良好的操作界面,简单人性化的操作方式,优质的快速图形解码方式,支持丰富的图形格式,强大的图形文件管理功能等等.
ACDSee是使用最为广泛的看图工具软件,大多数电脑爱好者都使用它来浏览图片,它的特点是支持性强,它能打开包括ICO、PNG、XBM在内的二十余种图像格式,并且能够高品质地快速显示它们,甚至近年在互联网上十分流行的动画图像档案都可以利用ACDSee来欣赏。
ACDSee的版本更新速度并不是很快,而且新旧版本介面之间的差异也不是很明显,但每次推出新版本时,程序上都会会新增加一些小功能.ACDSee目前也可以支持WAV格式的音频文件播放,看来程序将朝向多媒体应用及播放平台努力研发.目前,最新版为ACDSee2009(英文版),中文版最新版本为ACDSee10。
ACDSee本身也提供了许多影像编辑的功能,包括数种影像格式的转换,可以藉由档案描述来搜寻图档,简单的影像编辑,复制至剪贴簿,旋转或修剪影像,设定桌面等。
(2)AdobePhotoshop
Photoshop是Adobe公司旗下最为出名的图像处理软件之一。
最新版本是AdobePhotoshopCS4。
CS是AdobeCreativeSuite一套软件中后面2个单词的缩写,代表“创作集合”,是一个统一的设计环境,将AdobePhotoshopCS2、IllustratorCS2、InDesignCS2、GoLiveCS2和Acrobat7.0Professional软件与VersionCueCS2、AdobeBridge和AdobeStockPhotos相结合。
提供的功能十分强大。
从功能上看,Photoshop可分为图像编辑、图像合成、校色调色及特效制作部分。
图像编辑是图像处理的基础,可以对图像做各种变换如放大、缩小、旋转、倾斜、镜像、透视等。
也可进行复制、去除斑点、修补、修饰图像的残损等。
这在婚纱摄影、人像处理制作中有非常大的用场,去除人像上不满意的部分,进行美化加工,得到让人非常满意的效果。
图像合成则是将几幅图像通过图层操作、工具应用合成完整的、传达明确意义的图像,这是美术设计的必经之路。
Photoshop提供的绘图工具让外来图像与创意很好地融合,成为可能使图像的合成天衣无缝。
校色调色是photoshop中深具威力的功能之一,可方便快捷地对图像的颜色进行明暗、色偏的调整和校正,也可在不同颜色进行切换以满足图像在不同领域如网页设计、印刷、多媒体等方面应用。
特效制作在photoshop中主要由滤镜、通道及工具综合应用完成。
包括图像的特效创意和特效字的制作,如油画、浮雕、石膏画、素描等常用的传统美术技巧都可藉由photoshop特效完成。
而各种特效字的制作更是很多美术设计师热衷于photoshop的研究的原因。
(3)Windows图片和传真查看器
这是Windows操作系统中自带的看图工具。
界面简洁,功能简单实用。
除了能够保存翻转后的图像以外,不能再做其他任何的图像变换。
与ACDsee相比,是一款纯看图工具。
它能提供的主要看图功能为:
图片的上/下一张浏览、全屏幕/幻灯片浏览、图片的缩放、图片的旋转、当前图片的删除、调用Windows画图板、保存为其他图片格式等。
1.4本文的主要研究成果和内容安排
本文分析并设计了一款简易的图片浏览器。
由于人力、物力、财力和技术的种种限制,本文中所设计的图片浏览器还远无法达到前文所述的ACDsee和Photoshop的技术水平。
但是本毕业设计可以完全取代Windows操作系统中自带的看图工具。
而且比Windows系统自带的看图工具有着更好的响应速度。
比如使用Windows图片和传真查看器看图,当拖动一个大小超过窗口范围的图片时,会出现明显停顿的感觉。
同样的情况在本毕业设计中实现的工具中不会出现。
本毕业设计具有一定的实用价值。
本文的第二章介绍编程语言和开发平台的选择。
第三章分析流行的图片格式。
第四章中具体地设计并实现一个图片浏览器,其中包括需求分析,总体设计,详细设计,辅助功能设计。
第五章中描述软件测试的过程,并对软件提出改进方案。
第六章总结全文。
第二章编程语言和开发平台的选择
本毕业设计所针对的操作系统是MicrosoftWindows98/Me/NT/2000/XP/2003。
目前Windows下常用的可视化集成开发环境(IDE)包括以下几种。
一、Microsoft公司出品的VisualC++、VisualBasic、.NET平台等。
二、Borland公司出品的C++Builder、Delphi及JBuilder等。
三、SUN公司出品的Netbeans以及IBM公司的免费工具Eclipse。
编程语言和开发环境的选择对一个系统的设计是至关重要的。
世界上没有一种编程语言是完美的,每一种编程语言都有它的优缺点。
所以要选择适合本毕业设计的语言。
本毕业设计采用的开发语言是C++。
本毕业设计所采用的软件开发平台是Microsoft公司出品的MicrosoftVisualC++6.0,并且使用微软基础类库应用程序框架(MFCApplicationFramework)搭建系统的基本架构。
2.1C++在灵活性和便利性上的优势
C++作为一种编程语言,继承了C语言中能够灵活操纵指针的特点。
同时作为一种面向对象语言。
C++有着强大的描述现实世界的能力。
C++中大量使用指针,使得编程的灵活性很高,这虽然增加了程序出错的可能性,但是便于程序员施展编程技巧来提高程序的效率。
Java完全取消了指针,C#极大地限制了指针的使用,这都限制了程序员施展技巧。
因此,使用C++进行图像处理编程具有更大的灵活性。
本毕业设计要实现的是一款图像浏览器。
这就要求软件应该有较好的视觉体验和交互性。
使用C语言设计这样一款软件,效运行率可得到提高。
但这必然需要程序员把大量的时间放在软件外观的设计上。
这些工作是C语言所不擅长的。
而C++作为一种面向对象语言,有着C语言不可比拟的建模能力,可以快速地设计和描述出应用中所要使用的各种对象。
MicrosoftVisualC++6.0的可视化环境可以帮助程序员快速地设计出软件界面,使得设计者把主要精力放在功能模块的实现上。
Microsoft公司还提供给设计者大量的图形图像操作函数。
这些被包含在Win32API中或被封装在MFC中。
在设计时可以方便地引入使用。
C语言虽然在运行效率上有着得天独厚的优势,但本毕业设计只是针对一般的图形图像,所需要处理的数据量相对较小。
本毕业设计所应用的范畴仅是一般领域,并非如军事,气象,空间传输等对处理速度有非常苛刻要求。
所以综合编程的灵活性和方便性,C++在图像处理上具有优势。
2.2C++在运行效率上的优势
本毕业设计所面对的主要任务是处理大量的图形图像数据,反复地操作系统内存。
并且本系统只需在Windows下运行,没有跨平台应用的需求。
这就首先要求系统在效率上应该有较好的表现。
C++是一种编译型语言。
C++代码被编译成汇编语言和平台相关的二进制代码,可以直接在处理器上运行,效率很高。
而作为现代编程语言的Java和C#为了满足平台兼容和通用性的需要,引入了“中间代码”的概念,因此在执行效率上要有所牺牲。
Java作为一种解释型语言,其代码首先要被编译成字节码,经过Java虚拟机(JAVAVM)的解释后才能执行。
C#则要被编译成中间语言,这也无法在处理器上直接执行的,必须通过.NET通用语言运行时间的JIT编译之后才能执行。
故从运行效率的角度看,采用C++进行图像编程比较合适。
对庞大的图像数据进行处理时需要使用大量的内存,而计算机的物理内存容量往往是有限的,因此需要有效地控制内存的使用。
C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MFC 图片 浏览器 设计 及其 工具软件 实现 要点