java图片管理系统代码及设计.ppt

上传人:本田雅阁 文档编号:3481741 上传时间:2019-09-01 格式:PPT 页数:30 大小:298.52KB
返回 下载 相关 举报
java图片管理系统代码及设计.ppt_第1页
第1页 / 共30页
java图片管理系统代码及设计.ppt_第2页
第2页 / 共30页
java图片管理系统代码及设计.ppt_第3页
第3页 / 共30页
java图片管理系统代码及设计.ppt_第4页
第4页 / 共30页
java图片管理系统代码及设计.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《java图片管理系统代码及设计.ppt》由会员分享,可在线阅读,更多相关《java图片管理系统代码及设计.ppt(30页珍藏版)》请在三一文库上搜索。

1、图片管理系统,J2SE应用,第五期 欧美班 程军,Page 2,目录,实现意义,01,功能分析,02,编码实现,04,系统测试,05,完成提交,06,概要设计,03,Page 3,实现意义,一 实现意义: Java语言简介: Java语言结构体系简介: 关于Java软件工程师的简介: 实现图片管理系统的实际意义:,Page 4,Java语言简介,Java是一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。请大家一口气说出这句,你是否感觉到Java的力量。这样说可能你没啥感觉那么请看下面的它历程简单介绍。 当1995年SU

2、N推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。那么Java到底有何神奇之处呢? 在Java出现以前,Internet上的信息内容都是一些乏味死板的HTML文档。 当Java语言的出现让这一状况出现了彻底得到了改变,让我们的Internet丰富多彩起来。,Page 5,Java语言结构体系简介,Java体系结构: 完整的Java体系结构实际上是由4个组件组合而成: Java编程语言 Java类文件格式 Java API JVM 因此,使用Java开发时,就是用Java编程语言编写代码,然后将代码编译为Java类 文件,接着在JVM中执行类文件。JVM与核心类共同构成了Java平台

3、,也称为 JRE(Java Runtime Environment,Java运行时环境),该平台可以建立在任意操作系 统上。图1-1显示了Java不同功能模块之间的相互关系,以及它们与应用程序、与操 作系统之间的关系。 Java API是预先编写的代码,并按相似主题分成多个包。Java API主要分为3大平台:,Page 6,Java API主要分为3大平台,Java API主要分为3大平台: J2SE(Java 2 Platform, Standard Edition):该平台中包含核心Java类和GUI类。 J2EE(Java 2 Platform, Enterprise Edition)

4、:该包中包含开发Web应用程序所需的类和接口,有Servlet、JavaServer Page、以及Enterprise JavaBean类等。 J2ME(Java 2 Platform, Micro Edition):该包体现了Java的传统优势,为消费类产品提供了一个已优化的运行时环境,用于如传呼机、手机或汽车导航系统。,Page 7,关于Java软件工程师的简介,关于Java软件工程师的简介: 如今由于Internet的高速发展,为了能使用户得到更好的体验并实现用户与服务器的交互,使基于B/S模式的软件开发进入了一个高速发展期。 Java的应用可以说是无处不在,从桌面办公应用到网络数据库

5、等应用,从PC到嵌入式移动平台,从Java小应用程序(Applet)到架构庞大的J2EE企业级解决方案,处处都有Java的身影,就连美国大型太空项目当中,也使用了Java来开发控制系统和相关软件。用途如此之广的Java造就了Java软件工程师的辉煌,使其在软件工程师的领域里独占鳌头!Java软件工程师运用Java这个开发工具去完成软件产品的软件程序设计、开发、测试、维护升级等工作。 熟悉Java、Servlet、JSP、EJB等开发技术;熟练使用Eclipse或jbuilder等java开发工具;熟悉JAVA+STRUTS体系结构和开发工具;熟悉至少一种数据库的开发和设计;具有良好的学习能力,

6、具有强烈的工作责任心、有良好的沟通能力和团队合作精神。,Page 8,实现图片管理系统的实际意义,实现图片管理系统的实际意义: 对于Java软件工程的学习,首先需要完成对于J2SE的学习,先了解一下基本语法,不要求一下学会,然后试着写了以些程序(不会正好去查),从基本开始,写到对基础比较熟悉了,再拿些好的书,比如thinking in java来学习概念以及整理思路加高级的语言特性,然后完成更好的更复杂的程序。 在学习J2SE课程结束之余我完成了图片管理系统,通过完成该系统我实现了前期所学知识的融会贯通,并掌握了J2SE课程中的基本内容,随着系统的完成也充分体现了所学的不足之处,为下一步更好的

7、学习Java课程提供了一个良好的检测机会。,Page 9,功能分析,二 功能分析 图片管理系统主要分为三个模块: 树形图片管理器:该模块主要用来从文件夹中遍历图像文件并建立成一个树状的图片管理器。 图片显示区域:主要用来显示图片以及被处理后的各种效果。 图片处理工具栏:主要是一个工具栏包含了对图片处理的各个功能,例如放大,缩小,旋转等。,Page 10,模块图,图片管理系统,图片显示区域,树形图片管理器,图片处理工具栏,Page 11,树形图片管理器,树形图片管理器:该模块主要是实现从目录中区分图片文件和目录,并通过目录本身的层次结构,以一个棵树的形式将所有遍历出来的图片显示出来。 树形目录结

8、构图如图1所示。,Page 12,图1,Page 13,图片显示区域,图片显示区域:该模块主要是用来初始化显示一个图像,同时也能用来显示各种被处理后的图像。具体各种图像显示效果见图2,图3。,Page 14,图像处理效果,图2,Page 15,图像处理效果,图3,Page 16,图片处理工具栏,图片处理工具栏 该模块主要是一个工具栏包含了对图片处理的各个功能,例如放大,缩小,旋转等。具体可以见图4。,Page 17,图4,Page 18,编码实现,树形图片管理器的主要实现代码如下: class InitTree static JTree tree; static DefaultMutableT

9、reeNode root=new DefaultMutableTreeNode(“folderName“); static DefaultMutableTreeNode node1; static DefaultMutableTreeNode node2; private static ArrayList filelist = new ArrayList(); public static void fireOne(String path) DefaultMutableTreeNode node3=new DefaultMutableTreeNode(path); TreePath tp=new

10、 TreePath(node3); TreeSelectionEvent e=new TreeSelectionEvent(tree,tp,true,tp,tp); public static JTree getTree() return tree; ,Page 19,public static void addNode() tree=new JTree(root); public static void refreshList(String path,DefaultMutableTreeNode root,HashMap hm1) File dir = new File(path); Fil

11、e files = dir.listFiles(); if(files=null) return; for (int i = 0; ifiles.length; i+) if(filesi.isDirectory() /如果是文件夹,则继续向下遍历 String folderName = filesi.getAbsolutePath(); node1=new DefaultMutableTreeNode(folderName); HashMap hm2=new HashMap(); HashMap hm3=new HashMap(); hm1.put(folderName,hm3); root

12、.add(node1);,Page 20,System.out.println (filesi.getParent(); System.out.println (“+“+folderName); refreshList(folderName,node1,hm3); else String fileName = filesi.getAbsolutePath(); System.out.println (“-“+fileName); node2=new DefaultMutableTreeNode(fileName); node1.add(node2); filelist.add(filesi.g

13、etAbsolutePath(); hm1.put(fileName,null); ,Page 21,图片显示区域的主要代码: System.out.println(“0000000000000000000“); int scale=frame.scale; frame.scale=scale; String path=frame.path; ImageIcon image1=new ImageIcon(path);/根据路径生成图片 ImageIcon image2=new ImageIcon(image1.getImage().getScaledInstance(100*scale,100

14、*scale,1);/找到放大后的图片 BufferedImage image3=BufferedImageConverter.createBufferedImage( image2.getImage(),frame.three2);/把image-bufferedimage BufferedImage image4=ImageTranslation.rotateImg(image3, frame.degree*45,Color.pink);/进行旋转,Page 22,图片处理工具栏的主要代码: 实现放大缩小功能的主要代码: class ImageTranslation public stat

15、ic BufferedImage rotateImg( BufferedImage image, int degree, Color bgcolor ) int iw = image.getWidth();/原始图象的宽度 int ih = image.getHeight();/原始图象的高度 int w=0; int h=0; int x=0; int y=0; degree=degree%360; if(degree0) degree=360+degree;/将角度转换到0-360度之间 double ang=degree* 0.0174532925;/将角度转为弧度,Page 23,if

16、(degree = 180| degree = 0 | degree = 360) w = iw; h = ih; else if(degree = 90| degree = 270) w = ih; h = iw; else int d=iw+ih; w=(int)(d*Math.abs(Math.cos(ang); h=(int)(d*Math.abs(Math.sin(ang); x = (w/2)-(iw/2);/确定原点坐标 y = (h/2)-(ih/2);,Page 24,实现保存的主要代码: public void save() JFileChooser dlg=new JFi

17、leChooser(); dlg.showSaveDialog(frame); String savePath=dlg.getSelectedFile().toString(); System.out.println(“open “+openPath); System.out.println(“save “+savePath); try FileInputStream fis=new FileInputStream(openPath); FileOutputStream fos=new FileOutputStream(savePath); int data; while(data=fis.r

18、ead()!=-1) fos.write(data); ,Page 25,BufferedImage rotatedImage=new BufferedImage(w,h,image.getType(); Graphics gs=rotatedImage.getGraphics(); gs.setColor(bgcolor); gs.fillRect(0,0,w,h);/以给定颜色绘制旋转后图片的背景 AffineTransform at=new AffineTransform();/二维变换类 at.rotate(ang,w/2,h/2);/旋转图象 at.translate(x,y); /

19、连接此变换与平移变换。 /* 此类使用仿射转换来执行从源图像或 Raster 中 2D 坐标到目标图像或 Raster 中 2D 坐标的线性映射。所使用的插值类型由构造方法通过一个 RenderingHints 对象或通过此类中定义的整数插值类型之一来指定。 */ AffineTransformOp op=new AffineTransformOp(at,AffineTransformOp.TYPE_NEAREST_NEIGHBOR); /转换源 BufferedImage 并将结果存储在目标 BufferedImage 中。 op.filter(image, rotatedImage); i

20、mage=rotatedImage; return image;,Page 26,fis.close(); fos.close(); catch(Exception e) System.out.println(e.getMessage(); e.printStackTrace(); ,Page 27,处理事件的部分主要代码: public void actionPerformed(ActionEvent e) JButton button=(JButton)e.getSource(); if(button=button1) frame.degree+; /继续旋转 System.out.pri

21、ntln(“0000000000000000000“); int scale=frame.scale; frame.scale=scale; String path=frame.path; ImageIcon image1=new ImageIcon(path);/根据路径生成图片,Page 28,ImageIcon image2=new ImageIcon(image1.getImage().getScaledInstance(100*scale,100*scale,1);/找到放大后的图片 BufferedImage image3=BufferedImageConverter.create

22、BufferedImage(image2.getImage(),frame.three2);/把image-bufferedimage BufferedImage image4=ImageTranslation.rotateImg(image3,frame.degree*45,Color.pink);/进行旋转 ImageIcon image5=new ImageIcon(image4);/把bufferedimage 转换为image frame.label.setIcon(image5); /显示图片,Page 29,系统测试,在系统完成过程中出现了很多问题,通过不断的调试和反复的修改最终完成了该系统,当然该系统只是实现了基本的功能,其性能远远不够完善,但是通过该系统的实现为进一步学习打下了基础。,30,感谢您的关注,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1