图片管理器报告_第1页
图片管理器报告_第2页
图片管理器报告_第3页
图片管理器报告_第4页
图片管理器报告_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java面向对象程序设计学期作业项目报告题 目 图片管理器组 长 崔利欢组 员 赵志军 谌超尘 陈慧 施凤婷系 别 软件工程学 院 软件学院指导教师 付 伟 讲师2016年6月11日目 录一、 项目基本功能陈述3二、 项目进度及工作安排51、工作安排52、项目进度6三、 项目相关技术71、图片在面板中居中算法72、浏览图片时放大与缩小的算法83、图片的上下张的算法94、播放工具栏可以隐藏算法95、键盘与鼠标交替使用算法96、图片编辑算法107、编辑图片时图片的缩放算法10四、 项目设计121、图片浏览功能122、图片编辑功能12五、 项目实现131、图片查看器首页132、图片查看功能页面143

2、、图片编辑功能页面17六、 总结与展望201、 项目基本功能陈述本项目是一款关于图片管理器的应用软件,如图1.1所示,功能包括图片查看与图片编辑两大主要功能。如图1.2所示,图片查看包括以幻灯片形式播放,图片删除,图片上一张,图片下一张,图片放大,图片缩小等功能,如图1.3所示,图片编辑包括对图片的格式转化,图片锐化,图片马赛克,图片半透明效果,图片模糊效果,图片照亮,裁剪图片等功能。图1.1图1.2图1.32、 项目进度及工作安排1、工作安排如表2.1.1所示,对全体小组人员进行项目安排。姓名项目安排全体小组人员收集资料,列出项目需求崔利欢完成项目框架、编写项目报告文档添加编辑功能赵志军完成

3、幻灯片播放功能、完成小程序功能谌超尘完成项目报告文档、完成图片首页初始化陈慧完成项目需求文档,完成PPT的制作完成图片转化格式功能施凤婷完成项目需求文档,完成PPT的制作完成图片面板查看功能表2.1.12、项目进度如表2.2.1所示:时间项目进度完成者2016.4.27-2016.5.3收集资料,列出项目需求全体小组人员2016.5.5-2016.5.10完成项目框架崔利欢2016.5.11-2016.5.15完成项目浏览功能崔利欢陈慧施凤婷2016.5.12-2016.5.18完成项目幻灯片功能赵志军谌超尘2016.5.18-2016.6.2完成项目编辑功能崔利欢赵志军2016.6.4-20

4、16.6.9完成项目整合全体小组人员表2.2.13、 项目相关技术1、图片在面板中居中算法因为图片的大小不一样,所以对图片居中的显示需要进行分类处理。1) 对于宽度与高度都比放置图片的面板小的,可以用屏幕的宽度(高度)减去图片的宽度(高度) 再除以2,设置起始坐标位置。2) 对于宽度比面板小的,而高度比面板的高度高的图片,则图片放置的起始位置的横坐标与1)中的处理方式相同,而图片的纵坐标的位置设置为10个像素。3) 对于高度比面板小的,而宽度比面板的宽度宽的图片,则图片放置的起始位置的纵坐标与1)中的处理方式相同,而图片的横坐标的位置设置为10个像素。4) 对于宽度与高度都比放置图片的面板大的

5、,则将图片的坐标设置为(10,10)。代码如下:protected void paintComponent(Graphics g) super.paintComponent(g);if (pathString != null) image = new ImageIcon(pathString).getImage();int a = image.getWidth(this) - this.getWidth();int b = image.getHeight(this) - this.getHeight();if(a > 0 && b > 0)g.drawImage(i

6、mage,10, 10, this.getWidth() - 10, this.getHeight() - 10, 0, 0, image.getWidth(this), image.getHeight(this), null);else if (a > 0 && b < 0) g.drawImage(image,10, -b / 2, this.getWidth() - 10, image.getHeight(null) - b / 2 , 0, 0, image.getWidth(this), image.getHeight(this), null);else

7、if (a< 0 && b > 0) g.drawImage(image,-a / 2, 10,image.getWidth(null) - a / 2, this.getHeight() - 10, 0, 0, image.getWidth(this), image.getHeight(this), null);else g.drawImage(image,-a / 2, -b / 2,image.getWidth(null) - a / 2, image.getHeight(null) - b / 2, 0, 0, image.getWidth(this), i

8、mage.getHeight(this), null); 2、浏览图片时放大与缩小的算法 对于图片的缩放可以根据一个分式的分子与分母同时加上或减去原式的分子与分母的比例的倍数,则分式的大小不变的原理来进行缩放图片。代码如下:float proportion = (float) (jFrame.image.getWidth(null)/ jFrame.image.getHeight(null);/获得宽与高的比例jFrame.photoJpanel.setBounds(jFrame.photoJpanel.getX()- (int) (5 * proportion), jFrame.photoJ

9、panel.getY() - 5,jFrame.photoJpanel.getWidth() + (int) (10 * proportion),jFrame.photoJpanel.getHeight() + 10);/设置位置 3、图片的上下张的算法 先获得图片的路径,然后根据路径将本文件下的图片(通过文件过滤)的绝对路径全部加载到ArrayList的集合中,然后对集合进行操作。4、播放工具栏可以隐藏算法 在全屏播放时,当鼠标移进相应的区域时,工具栏面板会及时显示出来。一个JFrame框架有许多面板层组成,最顶层的是玻璃面板,玻璃面板为不可见,透明的,把工具栏面板添加到玻璃面板中,并且将其

10、设置成可见,透明的,就可以达到以上的效果。代码如下:fullToolJPanel = new FullToolJPanel();JPanel glasspane = new JPanel();setGlassPane(glasspane);glasspane.add(fullToolJPanel);glasspane.setLayout(null);glasspane.setOpaque(false);getGlassPane().setVisible(true);5、键盘与鼠标交替使用算法为了实现键盘与鼠标交替的使用,在这里需用将JFrame上的所有按钮都设置成不聚焦点,设置的方法是jbut

11、ton.setFocusable(false);6、图片编辑算法为了实现对图片进行编辑处理,我们使用了双缓冲技术,将 image写到bufferImage中,然后再对bufferImage中的图像进行处理,最后再将bufferImage中的图片写入到文件中。代码如下(图片放大处理): jFrame.photoJpanel.getHeight() + 10);/设置位置 BufferedImage buffImage1 = new BufferedImage(jFrame.photoJpanel.getWidth(), jFrame.photoJpanel.getHeight(),Buffere

12、dImage.TYPE_3BYTE_BGR);/创建双缓冲对象Graphics g2 = buffImage1.createGraphics(); /获得画笔g2.drawImage(buffImage, 0, 0, jFrame.photoJpanel.getWidth(),/jFrame.photoJpanel.getHeight(), 0, 0, buffImage.getWidth(null),buffImage.getHeight(null), null);/将图片绘到缓冲图片中g2.dispose();/销毁画笔buffImage = buffImage1;/获得缓冲引用对象7、编

13、辑图片时图片的缩放算法根据浏览图片进行缩放的算法,再创建一个缓冲图像,将其大小设置成要缩放后的图片,然后再把图片绘制到缓冲图像中。float proportion = (float) (jFrame.image.getWidth(null)/ jFrame.image.getHeight(null);/获得宽与高的比例jFrame.photoJpanel.setBounds(jFrame.photoJpanel.getX()+ (int) (5 * proportion), jFrame.photoJpanel.getY() + 5,jFrame.photoJpanel.getWidth()

14、- (int) (10 * proportion),jFrame.photoJpanel.getHeight() - 10);/设置位置BufferedImage buffImage1 = new BufferedImage(jFrame.photoJpanel.getWidth(), jFrame.photoJpanel.getHeight(),BufferedImage.TYPE_3BYTE_BGR);/创建双缓冲对象Graphics g2 = buffImage1.createGraphics();/获得画笔g2.drawImage(buffImage, 0, 0, jFrame.pho

15、toJpanel.getWidth(),jFrame.photoJpanel.getHeight(), 0, 0,buffImage.getWidth(null),buffImage.getHeight(null), null);/将图片绘到缓冲图片中g2.dispose();/销毁画笔4、 项目设计1、图片浏览功能2、图片编辑功能5、 项目实现如图5.1所示,点击图片查看器.exe,则可以直接进入软件。 图5.11、图片查看器首页如图5.1.1所示,左边是目录导航,右边是预览窗口,预览窗口之上有编辑按钮,浏览按钮,以及桌面小程序的启动与关闭按钮。当点击预览面板是就会弹出一个弹出菜单,可以对图

16、片进行编辑处理。图5.1.1如图5.1.2所示,当点击启动按钮时,就会出现一个桌面时钟表。图5.1.22、图片查看功能页面若想对图片进行浏览,则可直接双击预览图片面板或者可以点击浏按钮也可以点击左键然后点击弹出菜单上的浏览选项,则可跳入浏览面板页面。如图5.2.1所示: 图5.2.1当鼠标移动到不同位置时,工具面板会相应地发生变化,如图5.2.2所示,当鼠标移动到下一张位置时,界面发生的变化。 图5.2.2当点击工具面板上的幻灯片按钮或按Enter键时,就出现了如图5.2.3所示的页面。在此页面中图片以一定时间间隔播放图片,这个时间间隔可以用户自己设置,用户可以暂停,也可以自己点击进行切换图片

17、。图5.2.3若用户想要退出全屏浏览页面,可以直拉按Esc键或者可以点击屏幕上的关闭按钮,就会退到首页页面。如图5.2.4所示:图5.2.43、图片编辑功能页面若想对图片进行编辑处理,则可直接点击编辑按钮也可以点击左键然后点击弹出菜单上的编辑菜单选项,则可跳入编辑面板页面。如图5.3.1所示:图5.3.1图片编辑页面分为菜单栏和图片面板,菜单栏可以对图片进行一系列的编辑处理,如图5.3.2所示,图片特效菜单功能:图5.3.2当点击文件菜单,选择打开,则会弹出一个新的选择图片对话框,可以对图片进行重新选择,如图5.3.3所示:图5.3.4如图5.3.5所示图片裁剪功能:图5.3.5如图5.3.6

18、所示图片锐化功能:图5.3.66、 总结与展望通过将近一个月的项目中,使我们学到了很多东西,也让我们看到了自己的在一些知识上的不足,也将使我们在后面java web的学习中还要更加努力,以便将来找到自己适意的工作,在这次项目中我学到了很多东西,不只是代码上的知识,也学到了java框架上的一些基本东西,还有层次结构的好处和由来,怎样实现封装使得更好的保护数据,实现java的三大特点,使代码的耦合度降低提高内聚力类和类之间的依赖性降低使模块和模块之间的层次分明,实现代码的复用和实现结构的复用使得开发一个系统的性能更加的优异。在这次项目中使我对java面向对象的认识有了更深刻的印象,对“万物皆为对象“这个理念有更深层次的理解,通过和老师的交流和上网了解的一些知识,其实做软件的实质并不是在代码上实现什么样的功能,你只要愿意去用你所学的知识肯定能够实现某个功能,但学软件的最根本是分析和设计,所以现

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论