基于Java的图形图像处理软件的设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ANYANG INSTITUTE OF TECHNOLOGY 本科毕业论文
图形图像处理软件的设计与实现Image processing software design and
implementation
系(院)名称:计算机科学与信息工程学院
专业班级: 网络工程二班
学生姓名: 高宁
指导教师姓名:王占中
指导教师职称: 高级工程师
年月
附件2:
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果.尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得安阳工学院及其它教育机构的学位或学历而使用过的材料。

对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意.
作者签名: 日期:
指导教师签名:日期:
使用授权说明
本人完全了解安阳工学院关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存
论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:日期:
目录
引言 (7)
第一章绪论 (8)
1.1。

1 计算机图形图像学的发展简史 (8)
1.1。

2现有图形图像处理软件 (8)
1。

2课题研究的目的及意义 (9)
第二章图形图像处理软件开发技术基础 (10)
2.1 Java Swing 简介 (10)
2。

1.1 Swing的特性 (10)
2.1.2 Swing程序包和类 (11)
2.2 MVC体系结构 (12)
2。

2。

1 模型 (12)
2。

2。

2 视图 (13)
2。

2。

3 控制器 (13)
第三章图形图像软件的设计 (14)
3.1图形处理模块的设计 (14)
3。

1。

1结构设计 (14)
3。

1。

2功能描述 (14)
3。

1。

3图形处理模块结构图 (14)
3。

1。

4主要类设计................................................................ 错误!未定义书签。

3.2 图像处理模块的设计 (15)
3.2.1结构设计 (15)
3.2。

3结构图 (16)
4。

1 绘图功能的详细设计与实现 (18)
4.1.1 菜单栏 (18)
4。

1。

2工具栏 (19)
4.1。

3画图区 (19)
4。

1.4状态栏 (20)
4。

2 图像编辑的详细设计与实现 (21)
4.3滤镜处理的详细设计与实现 (22)
4.3。

1 图像增强 (22)
4.3.2图像边缘检测 (24)
4.3.3 图像平滑处理 (26)
4。

3.4 系统测试 (27)
结论 (29)
致谢 (30)
图形图像处理软件的设计与实现
摘要:随着计算机技术的迅速发展,图形图图像技术在各个领域的研究和应用日益深入和广泛。

由于图形图像各种算法的实现,使得其处理速度越来越快,能更好的为人们服务。

图形图像处理的信息量很大,对处理速度的要求也比较高。

Java 强大的运算和图像展示功能,使图像处理变得更加的简单和直观。

同时系统所有的操作设计得十分简单方便,无需具备有专业的知识,也能实现图像图像处理.
Java是一种完全面向对象的语言,Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。

本文基于Java的图形图像处理环境,设计并实现了以图形图像处理系统,展示如何通过利用Java实现对图形图像的各种处理。

关键词:Java 绘图板图形图像编辑滤镜处理边缘处理
Image processing software design and implementation
Abstract:With the rapid development of computer technology,graphic chart of image technology in various fields of research and application deeply and widely increasingly。

Due to the image of the realization of the algorithm,so that the processing faster,the better for the people service. Image processing of information is very big, the requirements of processing speed is high. Java powerful operation and image display function,make the image processing become more simple and intuitive. And the system all operating very simple design, need not have the professional knowledge, also can realize image and image processing.
Java is a fully object—oriented language,the design of the Java language focus on objects and interface,it provides simple class mechanism as well as the dynamic model of the interface。

This paper,based on the Java graphics image processing environment,the design and realized by graphical image processing system,and shows how to use Java to achieve through graphic image of processing.
Key words:Java; Drawing board; Graphic image editing;Filter processing; Edge processing
引言
随着图形图像处理技术的发展,从七十年代中期开始,随着计算机技术和人工智能、思维科学研究的迅速发展,图形图像处理向更高、更深层次发展。

图形图像是用各种观测系统以不同形式和手段观测客观世界而获得的,可以直接或间接作用于人眼并进而产生视知觉的实体。

其最广义的观点是指视觉信息。

例如照片、图画、电视画面以及光学成像等。

人类的大部分信息都是从图像中获得的.
目前国内外市场依然是以Adobe公司的Photoshop为主流的图形图像处理软件,软件拥有强大的处理能力,丰富的工具库,代表着计算机图形图像处理领域的最高技术标准。

进入21世纪,随着计算机技术的迅猛发展和相关理论的不断完善,数字图像处理技术在许多应用领域受到广泛重视并取得了重大的开拓性成就,如航空航天、生物医学工程、工业检测、机器人视觉、公安司法、军事制导、文化艺术等领域.图形图像处理技术已成为一门引人注目、前景远大的新型学科。

本文是基于Java图形图像处理软件,Java编程语言是一种跨平台的编程语言,在编写图形用户界面方面,也要支持跨平台功能。

为此Java提供了强大而丰富的AWT包和Swing包,使得Java功能越来越强大,界面越来越美观.Java图形图像用户界面的编写普遍采用构件化思想来进行,AWT和Swing本身提供的也是许多标准的构件和容器。

本软件将所学的理论知识与实际应用相结合,运用Java编程语言,实现绘图功能、图形图像的常规编辑功能、滤镜处理功能、边缘处理功能,以达到进一步提高程序开发能力的目的。

第一章绪论
图形图像信息是人类获得外界信息的主要来源,因为大约有70%的信息是通过人眼获得的,而人眼获得的都是图形图像信息.在近代科学研究、军事技术、工农业生产、医学、气象及天文学领域中,人们越来越多地利用图形图像信息来认识和判断事物,解决实际问题.本设计能实现基本的绘画功能以及图形图像的基本编辑.
1.1课题背景
1。

1。

1 计算机图形图像学的发展简史
麻省理工学院(MIT)旋风I号(Whirlwind)计算机的附件诞生了.该显示器用一个类似于示波器的阴极射线管(CRT)来现实一些简单的图形.1958年美国Calcomp公司由联机的数字记录仪发展成滚筒式绘图仪,GerBer公司把数控机床发展成为平板式绘图仪。

在整个50年代,只有电子管计算机,用机器语言编程,主要用于科学计算,为这些计算机配置的图形设备仅具有输出功能.计算机图形学处于准备和酝酿时期,并称之为:“被动式"图形学。

到50年代末期,MIT的林肯实验室在“旋风”计算机上看法SAGE空中防御体系,第一次使用具有指挥和控制功能的CRT显示器,操作者可以用笔在屏幕上指出被确定的目标.1974年,在Colorado大学召开了第一届SIGGRAPH年会,并取得巨大的成功,当时大约有600位来自世界各地的专家参加会议。

到1997年,参加会议的人数已经增加到48,700。

因为每年只录取大约50篇论文,在Computer Graphics杂志上发表,因此论文的学术水平较高,基本上代表图形图像学的主流方向。

1。

1。

2现有图形图像处理软件
随着对图形图像处理需求的扩大,现有的图形图像处理软件多种多样,数不胜数.本文简单介绍两个比较有代表性的图形图像处理软件:Photoshop Photoshop是平面图形图像处理业界霸主Adobe公司推出的跨越PC和MAC
两界首屈一指的大型图形图像处理软件。

它功能强大,操作界面友好,得到广大第三方开发厂家的支持,从而也赢得众多用户的青睐。

Photoshop是目前公认的最好的通用平面美术设计软件,它的功能完善,性能稳定,使用方便,所以在几乎所有的广告、出版、软件公司,Photoshop都是首选的平面工具。

通过Photoshop 可以对图形图像修饰、对图形图像进行编辑,以及对图形图像的色彩处理,另外,还有绘图和输出功能。

在实际生活和工作中,可以将数码相机拍摄下来的照片进行编辑和修饰,也可以将现有的图形图像和照片,用扫描仪扫如计算机进行加工处理,还可以把摄像机摄入的内容转移到计算机上,然后用它实现对影像的润色。

总之,Photoshop可以使你的图形图像产生特技效果,如果和其它工具软件配合使用,还可以进行高质量的广告设计、美术创意和三维动画制作。

由于Photoshop功能强大,目前正在被越来越多的图形图像编排领域、广告和形象设计领域以及婚纱影楼等领域广泛使用,是一个非常受欢迎的应用软件.
1.2课题研究的目的及意义
随着科学技术的不断发展,计算机的更新速度不断提高,人们的思想文化素质的提高,对图形图像的要求也越来越高。

因此把原始图形图像与计算机结合起来,从而创作出许多更加完美的图像,满足人们的需求,计算机图形图像处理,是指利用计算机对图像图像进行一系列加工,以便获得人们所需要的效果.图形图像是人们获取和交换信息的主要来源,人类感知外界信息,80%以上是通过视觉得到的.因此,图形图像处理的应用领域必然涉及到人类生活和工作的方方面面。

图形图像是用各种观测系统以不同形式和手段观测客观世界而产生视知觉的实体。

比如人的视觉就是以观测系统,通过它得到的图形图像就是客观景物在人心目中形成的影像.视觉是人类观察世界、认知世界的重要功能手段。

图形图像带有大量的信息,百闻不如一见,一图值千金都说明这个事实。

为此开发这个图形图像处理软件,能过处理一些图形图像,并对图形图像处理技术此方面进行深入的研究。

第二章图形图像处理软件开发技术基础
2.1 Java Swing 简介
浏览Java的主页(http://java.sun.con/)时,可以找到对Swing的说明,他被描述成一组可定制的图形组件,可以在运行时指定这些组件的外观风格.不过,Swing实际上不只这些,它允许使用Java语言进行企业级开发.程序员可以使用Swing建立包含许多功能强大的组件的大型Java应用程序,并且可以更容易地扩充或者修改这些组件以控制它们的外观和行为.那么,为了能较好地发挥Swing的优势来为自己的Java应用程序增色,首先就要对Swing有一个总体的认识。

2.1.1 Swing的特性
Swing的特性有以下三个方面:
一、可插拔外观风格
Swing类最让人激动的一个方面是能够规定每个组件的外观风格,甚至可以在运行时重新设置外观风格.这种特性叫做“可插拔外观风格"(Pluggable Look —and—Feel,或简称PLAF)。

Swing能够模拟集中外观风格,并且它目前支持Window、Unix Motif和“本地”Java Metal外观风格.此外,Swing允许用户在运行时转换外观风格,而不必关闭应用程序。

这样,用户甚至可以为每一个Swing 组件建立自己的外观风格。

二、轻型组件
绝大多数Swing组件都是轻型的。

在最完美的情况下,这意味着这些组件并不依赖本地对等组件来绘制自己。

相反,它们使用简化的图形基本元素在屏幕上描绘自己,甚至允许部分图像是透明的。

只是少数顶层容器不是轻型的(如Jframe和JWindow)。

这个设计允许程序设计人员在运行时绘制(和重新绘制)自己的应用程序的外观风格,而不是对主机操作系统的外观风格进行这样的尝
试。

此外,Swing组件的设计支持对组件行为随意修改.例如,可以告诉几乎所有的Swing组件用户是希望接受输入焦点还是希望拒绝输入焦点,可以告诉它应该如何处理键盘输入。

三、如何使用Swing
不是人人都为了同一个原因而使用Swing。

实际上,因为有着各种级别的必须预先具备的知识,所以Swing库有许多使用级别。

以下是一些可能的用途: 1.在打算建立自己的企业级应用程序时使用Swing组件。

第一种方法是大多数Swing组件所使用的方法。

在这时,使用Swing组件类似于使用AWT组件.常见的组件、容器和布局管理器都可以从Swing程序包中获得,它们有助于建立并快速运行应用程序。

如果擅长使用AWT组件进行编程,只需要浏览对每个组件的粗略介绍,就可以开始使用了.只有在使用一些更大并且更新的组件(如表和文本),或者打算将每个组件用作JavaBean进行可视编程时,才必须考虑更多的问题。

2.建立自定义Swing组件-或者扩展已经存在的组件.
建立自定义组件或者扩展现有的组件需要更深入的了解Swing。

这是一定要了解Swing体系结构、事件和较低级别的类。

此外,如果决定细分Swing组件,则必须承担处理这个组件的责任,否则,新组建的执行情况就可能是不定的。

3.为一个或者多个Swing组件覆盖或者建立一个新的外观风格.
最后,用户可能希望更改一个或者多个Swing组件的外观风格。

这是可以使用的3种方法中最复杂的一种方法,它要求全面了解每个组件的设计,体系结构基本原理和图形基本元素。

此外,用户必须了解如何使用Swing的UIManager 和UIDefaults类来“设置”每个组件的外观风格.
2.1。

2 Swing程序包和类
Swing库中的程序包很多,只在此大致介绍在后面的图像浏览器的实现中用到的程序包.其中用得最多的当然是javax。

swing,另外有javax.swing。

border、javax。

swing。

event、javax.swing.tree、javax.swing.filechooser.以下给出了这些程序包的简短描述.Swing包是JFC(Java Foundation Classes)的一部分,由许多包组成,如表2。

1。

表2。

1 Swing包
2.2 MVC体系结构
Swing使用模型—视图—控制器体系结构(MVC)作为它的每个组件的基本设计。

实质上,MVC将GUI组件拆分成三个元素,每个元素都对组件的表现起着至关重要的作用。

2.2。

1 模型
模型包括每个组件的状态数据。

不同类型的组件有不同的模型。

例如,滚动条组件的模型可能包含有关可调整“滑尺”当前位置、最大值、最小值和滑尺宽度(与值的范围有关)的信息。

另一方面,菜单可能只包含一个用户用来从中进行选择的菜单项列表。

不论组件在屏幕上是如何被描绘的,这些信息总是相同的,模型数据总是独立于组件的可视表示。

2.2.2 视图
视图是指组件在屏幕上的表现形式。

可以参见两个不同GUI平台上一个应用程序窗口,这是现实视图如何不同的一个好例子.又如,几乎所有窗口框架都有一个位于窗口顶端的标题栏。

不过,标题栏的左边可能有一个关闭框(类似于Mac OS平台),或者可能在标题栏的右边有一个关闭框(与Windows平台中的类似).
2.2。

3 控制器
控制器使用户界面的一部分,它指示组件如何与事件进行交互。

事件的形式有很多种,例如,鼠标单击、获得或失去焦点、触发特定菜单命令的键盘事件,甚至是重新绘制某一部分屏幕的指示。

控制器决定了每个组件如何对事件做出反应.
Swing通常使用一个叫做模型代理(modek-delegate)的MVC设计的简化变体。

这个设计将视图和控制器对象合并到一个元素中,即UI代理,该元素将组件绘制到屏幕上,并处理GUI事件.模型负责维护有关组件状态的信息。

使用Java 语言捆绑图形功能和事件处理会容易一些,因为许多事件处理是使用AWT的。

模型与UI代理之间的通信是双向的。

第三章图形图像软件的设计
软件需求分析是设计优良的重要组成部分,一份好的需求分析说明,可以使程序设计的复杂性降到最低。

需求分析与总体设计是软件具体实现前的必要环节,具体介绍如下.
3.1图形处理模块的设计
3.1。

1结构设计
(1)菜单栏的设计
(2)画图区的设计
(3)工具栏的设计
(4)其他功能设计
3.1.2功能描述
该模块主要有菜单栏、工具栏、画图区组成,菜单栏具有新建、打开、保存等常见的功能;工具栏可以选择用户需要的图形样式、设置参数、插入文本等操作;画图区就是简单绘图区域,用户在画图区可自由绘制图形。

右击工具栏可设置工具是否可拖动.还可以根据不同的需要设置背景色,画笔大小、画笔颜色.能够在任意点添加文字并设置文字样式和字体。

3.1.3图形处理模块结构图
图3。

1 图形绘制模块
3。

2 图像处理模块的设计
3。

2。

1结构设计
(1)菜单栏的设计及功能实现:菜单栏主要包括文件、图像增强、图像分割、图像变换、前进后退、图像缩放。

(2)图像处理区的设计:将整个界面分为两个部分,左边部分是打开的原图像,右边部分显示的是处理后的图像。

3.2。

2功能描述
(1)文件:此功能主要实现图像的文件操作,包括打开一个图像、清空图像、对图像进行保存、退出软件.
(2)图像增强:此功能主要实现对图像进行加强边缘、锐化、模糊、浮雕、灰度变换处理.
(3)图像分割:此功能主要实现对图像进行边缘检测处理.
(4)图像变换:此功能主要实现对图像进行平滑处理。

(5)前进后退:此功能主要实现图像的上一张、下一张读取。

(6)图像缩放:此功能主要实现图像的放大缩小功能。

3.2。

3结构图
图3.2 图像处理模块的业务流程
各个分模块的功能如图3。

3-3.5
图3.3图像编辑模块
图3.4 滤镜处理模块
图3。

5 边缘处理模块
第四章软件具体实现
软件系统分析设计完成后,就是开始对系统设计的实施阶段,以便完成系统的性能和功能。

这是一个严格谨慎的过程,必须认真进行。

系统的具体设计实现主要完成各模块之间的具体界面设计问题以及核实系统是否达到实际要求。

4。

1 绘图功能的详细设计与实现
4。

1。

1 菜单栏
菜单栏包括文件、编辑、设置、帮助四部分。

其中,文件菜单实现了新建、打开、保存、退出功能;编辑菜单实现了撤销和恢复功能;设置菜单实现了画笔颜色、画笔大小和立方体宽度的设置;帮助菜单实现了关于画图板的帮助信息。

在Java中,菜单的构成有三个基本要素:MenuBar、Menu、MenuItem。

Menu、MenuItem类的继承关系如图4.1所示
图4.1 菜单类的继承关系
从图4。

1中可以看出,菜单相关的类都继承自MenuComponent,而不是Component,因此它无法像普通组件那样设置前景色、背景色、字体。

构造菜单首先要通过JmenuBar建立一个菜单栏,它是菜单容器。

然后使用Jmenu建立菜单,每个菜单再通过JmenuItem建立菜单项。

菜单的构造方法:Jmenu():建立一个新的Jmenu。

Jmenu(Action a):建立一个支持Action的新的Jmenu.
Jmenu(String s): 以指定的字符串名称建立一个新的Jmenu
Jmenu Jmenu:以指定的字符串名称建立一个新的Jmenu,并决定这个菜单是
否具有下拉属性。

4。

1.2工具栏
工具栏是一系列快捷操作的按钮,分别是:新建、打开、保存、自由画笔、直线、空心矩形、实心矩形、空心椭圆、实心椭圆、圆、实心圆、空心圆角矩形、实心圆角矩形、3D矩形、3D矩形、3D长方体、橡皮、设置背景色、画笔颜色、画笔粗细、添加文字,用来实现相应的功能。

另外还为工具栏设置了按钮图片和鼠标右击事件,右击鼠标可以设置工具栏是否可拖动.
构造工具栏时使用JToolBar创建一个工具栏对象,然后使用add()方法将带图标的按钮加到工具栏中。

JToolBar的构造函数:
JToolBar():建立一个新的JToolBar,位置为默认的水平方向.
JToolBar(int orientation):建立一个指定位置的JToolBar.
JToolBar(String name):建立一个指定名称的JToolBar
JToolBar(String name,int orientation):建立一个指定名称和位置的JToolBar。

4.1。

3画图区
画图区可以绘制各种图形,可以进行擦除操作,还可以根据实际需要添加文本。

绘图的操作一般在paint()或paintComponent()方法中进行,建立一个JPanel的子类,重写paintComponent()方法,利用该方法的Graphics类型参数的绘图方法进行绘图。

下面介绍一下基本图形的绘制方法:
(1)直线:绘制直线是通过使用Graphics的drawline方法来实现的,其原型如下:
Void drawline(int x1,int y1,int x2,int y2)
这个函数将使用当前颜色,在图形坐标系统中的(x1,y1)至(x2,y2)之间绘制一条直线。

(2)矩形:常见的矩形有两种:实体的(solid)、圆角矩形(rounded),这些矩形的绘制是用Graphics的一些方法来完成的,方法如下:
Void drawRect(int x,int y,int w,int h)
Void drawRoundRect(int x,int y,int w,int h,int arcWidth,int arcHeight)
除了绘制以外,还可以填充矩形,这由以下的Graphics方法来实现:
Void fillRect(int x,int y,int w,int h)
Void fillRoundRect(int x,int y,int w,int h, int arcWidth,int arcHeight)
(3)原形和椭圆:从数学上讲,圆形是椭圆的一种特殊情况,在Java中这种关系仍然成立。

在Java中,椭圆(当然也有特殊情况下的圆形)的定位定形是通过它的外接矩形来完成的。

因此,在它的绘制和填充方法中,其参数均为对应外接矩形的有关信息.这些方法的原型如下:
void drawOval(int x,int y,int width,int height)
void fillOval(int x,int y,int width,int height)
如果参数width和height的值相等,那么绘制出来的将是一个圆形。

4。

1。

4状态栏
状态栏是显示鼠标的状态的信息栏,随时反馈鼠标信息.鼠标事件对应MouseEvent类.它有两个监听者接口与之对应,一个是MouseListener接口(它有5个事件),一个是MouseMotionListener(它有两个事件)接口.
(1) MouseListener接口
错误!mousePressed:鼠标键被按下时调用。

○2mouseReleased:鼠标被释放时调用。

错误!mouseClicked:合并上述两个事件为一次鼠标点击事件.
错误!mouseEntered:进入指定区域。

错误!mouseExited:离开指定的区域。

它们的参数是MouseEvent,通过getX和getY方法,能够得到鼠标点击时鼠标指针的x和y坐标。

通过getClickCount方法,可以区别是单击操作,还是双击操作。

(2)MouseMotionListener接口
○,1mouseMoved:鼠标移动。

错误!mouseDragged:用户拖动鼠标.
4。

2 图像编辑的详细设计与实现
4。

2。

1public void init()
本方法实现了对图片查看器的界面的整体布局及按钮的初始化。

对页面的总体布局采用了以下主要代码进行实现setLayout(newBorderLayout());
add(pathBar, BorderLayout。

NORTH); add(picContainer, BorderLayout。

CENTER); add(ctrBar,BorderLayout。

SOUTH); resize(640, 400);设置顶部路径栏,及其文字显示;代码如pathBar = new,JPanel();pathBar。

setLayout(new BorderLayout());pathInfo.setText("图片查看器”);pathBar。

add(pathInfo);同时对图片显示区域,底部的控制栏的设置也运用了相似的代码进行实现,在此就不再重复。

各按钮除了“打开”一按钮外,其他的各按钮均设置为false.这是因为只有“打开”图片后才能进行以下的图像实现循环浏览、放大缩小等操作。

4。

2。

2 public void actionPerformed(ActionEvent)
在本方法中主要实现了用户对底部控制栏各按钮的点击后,图片查看器进行的相对应的操作反应。

方法中一开始用JButton click = (JButton) e。

getSource ();获取按键源,然后根据click与程序设定的已知的类进行比较决定进行相应的反应。

if(click == openbtn);if(click == prebtn && pic != null);等一系列进行判断后,进行或是打开文件open()方法的调用;或是pre()方法的调用;其他各操作也大同小异,在此就不再赘述。

4.2。

3. public void pre()及public void next()
pre与next方法实现了对当前图片的上一张下一张的浏览.因为在第一次打开文件时就将该路径下所有符合要求的图片存储在String[] pics中。

通过if(i == 0) { i = pics。

length-1;} else { i --;}其中i为当前的图片位置数。

通过dir = path + ”\\” + pics[i];获得文件的路径,然后调用loadImage(dir);此方法将在后面介绍;与上面的方法相对应的是此方法实现了对当前图片下一张的浏览,实现原理与上相同,if(i == pics.length—1) {i = 0;} else {i++;}通过调用loadImage(dir);一方法实现。

4.2。

4。

public void zoomin()
此方法实现了对当前的图片进行按设置比例缩小操作。

在进行缩小操作前,
先对图片的大小进行判断,看是否已经缩小到最小,若最小则显示提示信息“已经缩至最小!”;否则进行缩小操作.在此过程中调用了picTrans()方法,以及repaint(); 重绘组件的方法。

4.2。

5。

public void oripic ()及public void delete()
此方法实现了将放大或缩小后的图片大小还原的操作.同时也调用
picTrans()方法,以及repaint (); 重绘组件的方法。

具体的picTrans()方法将在下面详细描述。

此方法具体实现见附件;public void delete()方法将图片彻底删除,删除后图片彻底被粉碎,回收站里面都不能找到.因此要慎用此按钮.
4。

2.6. String 类
程序中运用了三个不同的String 类,从而实现了需要查看的图片的路径的操作,并且在启动图片查看器时,图片的路径能够在路径栏显示出来。

同时还设
置了String 数组用于存储用户选定的目录下所有指定格式的图片,这样可以实现循环浏览图片等操作.
4.3滤镜处理的详细设计与实现
所谓滤镜,就是把原有的画面进行艺术过滤,得到一种艺术或更完美的展示,滤镜的品种很多,应用广泛。

在图像的滤镜处理中,有一部分是通过卷积来实现的。

4.3。

1 图像增强
卷积滤镜同样用一个矩阵于图象可形成如模糊、边缘检测、锐化、浮雕和斜角等多种效果。

卷积滤镜重新计算每个像素,并根据矩阵将像素及其周围的象素要加得也该像素的新颜色.最常用的矩阵是3x3的矩阵,如图4。

2所示:
⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡N N N N P N N N N 图4.2
在这个矩阵中P 代表本身的像素,而N 代表周围的像素。

那么图4.3这个矩阵:。

相关文档
最新文档