java JPEG图像生成器 论文.doc_第1页
java JPEG图像生成器 论文.doc_第2页
java JPEG图像生成器 论文.doc_第3页
java JPEG图像生成器 论文.doc_第4页
java JPEG图像生成器 论文.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

X X X X 大 学Java语言程序设计课程设计(论文)题目: JPEG图像生成器 院(系): 专业班级: 学 号: 学生姓名: 指导教师: 教师职称: 起止时间: 课程设计(论文)任务及评语院(系): 教研室: 学 号 学生姓名 专业班级 课程设计(论文)题目JPEG图像生成器课程设计(论文)任务任务与要求:(1). 掌握面向对象程序设计语言JAVA的基本语法(2). 掌握JAVA面向对象设计的思想,(3). 掌握VJAVA6.0与MyEclips JAVA 开发工具的使用 (4). 运用标准JAVA规范设计应用程序设计过程中,要严格遵守设计的时间安排,听从指导教师的指导。正确地完成上述内容,规范完整地撰写出设计报告。指导教师评语及成绩 成绩: 指导教师签字: 年 月 日xxxx 大 学 课 程 设 计 说 明 书(论 文)目 录第1章 课程设计目的与要求11.1设计目的11.2实验环境11.3预备知识11.4设计要求1第2章 课程设计内容22.1 课题描述22.2 系统设计22.2.1功能分析22.2.2面向对象设计22.2.2类成员描述22.3程序实现22.3.1源码分析22.3.2运行结果2第3章 总结3参考文献4第1章 课程设计目的与要求1.1设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程JAVA语言教程的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。(3)利用所学知识,开发小型应用系统,掌握运用JAVA语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。(5)掌握面向对象程序设计的方法。(6)熟练掌握JAVA语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序和修改程序。1.2实验环境硬件要求能运行Windows 操作系统的微机系统。JAVA语言应用程序开发软件使用:VJAVA 系统,或其他JAVA语言应用程序开发软件。1.3预备知识熟悉JAVA语言程序设计的基本知识及VJAVA编辑器的使用方法。1.4设计要求1.仔细分析设计题目,画出程序流程图,编写程序源代码。2.积极上机调试源程序,增强编程技巧与调程能力。3.认真书写课程设计预习报告,课程设计说明书。4.遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容。第2章 课程设计内容2.1 课题描述JPEG 是被广泛使用的一种图像文件格式,本设计要求程序能将程序中绘制的图形保存为 JPEG 文件格式。 有时人们需要获取计算机屏幕上显示的图像,本程序要求能将屏幕图像保存为 JPEG 文件格式。本系统共包括5个Java源文件。本系统采用了awt包、util包、io包和swing包,程序实现了图像生成器的基本功能有: 可以设置图片的宽度、高度、外框颜色、背景色;可以设置图片字体的大小、名称、颜色;可以设置输出图片的格式,如JPEG、GIF等;可以将图片存储到一个文件或者存储到一个输出流;可以为图片增加若干条干扰线(在生成随机码图片时可用此特性);打印在图片上的文字支持自动换行。由于java的特性,可能用任何一个编辑器来编辑,在设计类的时候考虑简单明了,就设计了一个主类和默认属性类做为程序的整体框架,所有的对象和方法是在默认属性类中创建和实现的.以及为各组件注册事件监听监听程序也是在默认的属性类中实现的,主类完成对象的实例化及显示.这样设计的优点是:条理清晰,容易理解,容易修改.这样设计的缺点是:不利于共享类中的方法。2.2 系统设计* * 类名: MakeJPEG * 作用: 对图像生成器的界面对象的描述 * * 继承的父类: ActionListener类 * * 实现的接口: 没有 * * * * 类名:paint * * 作用: 用来完成鼠标的响应时间操作 * * * * 类名: actionPerformed * * 作用: 用来完成图像生成的相应事件操作 * * * * 类名: mouseDragged * * 作用: 用来完成鼠标拖动和鼠标移动时的相应操作 * * 2.2.1功能分析运行程序正常的响应按钮事件,可以进行绘画,选择色彩以及截取屏幕等操作,当结果出现异常的时候,这个时候就要对结果进行必要的异常处理,我在输出结果的方法内设置if 语句,如果不能正常以JPG格式存储图形时,将抛出一个actionPerformed类的异常对象,再使用try-catch,捕捉输出结果的方法抛出的异常对象。如果获取屏幕出现异常时,将抛出一个actionPerformed类的异常对象然后进行,再使用try-catch,捕捉输出结果的方法抛出的异常对象。重新运行的处理。2.2.2面向对象设计表1 类名及作用类名作用BorderLayout布局管理器的一种,一个面板分东南西北中五个区,用于放置控间,这样GUI在放大缩小,移植的时候方便Button此类创建一个标签按钮ColorColor 类用于封装默认 sRGB 颜色空间中的颜色,或者用于封装由 ColorSpace 标识的任意颜色空间中的颜色。Container一般的 Abstract Window Toolkit(AWT) 容器对象是一个可包含其他 AWT 组件的组件Graphics定义一个真正的工具,用来接受图形操作ActionEvent知道如何对自身进行指派的事件的接口ActionListener用于接收操作事件的侦听器接口MouseEvent鼠标事件MouseMotionListener用于接收组件上的鼠标移动事件的侦听器接口ButtonGroup此类用于为一组按钮创建一个多斥(multiple-exclusion)作用域2.2.2类成员描述表2 主类方法表方法名功能备注initForm面板初始化mouseClicked单击鼠标时产生的事件接口方法mouseEntered鼠标进入某个区域时产生的事件接口方法mouseExited鼠标退出某个区域时产生的事件接口方法mouseMoved移动鼠标时产生的事件接口方法mouseDragged拖动鼠标时产生的事件接口方法mousePressed按下鼠标时产生的事件接口方法mouseReleased放开鼠标时产生的事件接口方法getarea转换坐标initmap图片初始化2.3程序实现按下获取屏幕按钮,画板上就出现了桌面屏幕的截图,如下图: 获取屏幕的效果图2.3.1源码分析import java.awt.*;import java.util.*;import java.awt.geom.*;import java.awt.image.*;import java.awt.event.*;import java.io.*;import javax.swing.*;import com.sun.image.codec.jpeg.*;class Pointint x,y; Point(int x,int y) this.x=x;this.y=y; public class MakeJPEG extends Canvas implements MouseMotionListener,MouseListener,ActionListener/用于接收组件上的鼠标移动事件的侦听器接口/用于接收操作事件的侦听器接口 int x=-1,y=-1,橡皮擦通知=0,清除通知=0; Vector v=null;int n=1; Graphics2D ggg ; BufferedImage image; Frame window; Button 保存,调色板,橡皮,清除,画笔,获取屏幕,绘制图形; /创建标签按钮 Color 画笔颜色;/设置画笔颜色 Panel pCenter,pSouth,pNorth; public MakeJPEG() 保存=new Button(将绘制的图形或屏幕保存为JPG文件); 获取屏幕=new Button(获取屏幕);/创建一个获取屏幕标签按钮 绘制图形=new Button(绘制图形);/创建一个绘制图形标签按钮 调色板=new Button(打开调色板);/创建一个打开调色板标签按钮 画笔=new Button(画笔);/创建一个画笔标签按钮 橡皮=new Button(橡皮);/创建一个橡皮标签按钮 清除=new Button(清除);/创建一个清除标签按钮 调色板.addActionListener(this); 绘制图形.addActionListener(this); 保存.addActionListener(this); 画笔.addActionListener(this); 橡皮.addActionListener(this); 清除.addActionListener(this); 获取屏幕.addActionListener(this); 画笔颜色=new Color(0,0,0); addMouseMotionListener(this); addMouseListener(this); v=new Vector(); setBackground(Color.white); image=new BufferedImage(200,200,BufferedImage.TYPE_INT_RGB);ggg=image.createGraphics();/定义一个真正的工具,用来接受图形操作 Rectangle2D rect=new Rectangle2D.Double(0,0,200,200); ggg.setColor(getBackground(); ggg.fill(rect); window=new Frame(JPEG图像生成器); pCenter=new Panel(); pCenter.setLayout(null); pCenter.add(this); pCenter.setBackground(Color.gray); this.setBounds(80,30,210,210); window.add(pCenter,BorderLayout.CENTER);/布局管理器的一种,一个面板分东南西北中五个区,用于放置控间,这样GUI在放大缩小,移植的时候方便 pNorth=new Panel(); pNorth.add(保存); pNorth.add(绘制图形); pNorth.add(获取屏幕); window.add(pNorth,BorderLayout.NORTH); pSouth=new Panel(); pSouth.add(调色板); pSouth.add(橡皮); pSouth.add(清除); pSouth.add(画笔); window.add(pSouth,BorderLayout.SOUTH); window.setVisible(true); window.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); window.setBounds(100,80,390,380); window.validate(); public void paint(Graphics g) /用来完成鼠标的相应事件操作 if(x!=-1&y!=-1&橡皮擦通知=0&清除通知=0) g.setColor(画笔颜色); n=v.size(); for(int i=0;in-1;i+) Point p1=(Point)v.elementAt(i); Point p2=(Point)v.elementAt(i+1); g.drawLine(p1.x,p1.y,p2.x,p2.y); ggg.setColor(g.getColor(); ggg.drawLine(p1.x,p1.y,p2.x,p2.y); else if(橡皮擦通知=1&清除通知=0) g.setColor(getBackground(); g.fillRect(x-2,y-2,4,4); ggg.setColor(getBackground(); ggg.fillRect(x-2,y-2,4,4); else if(清除通知=1&橡皮擦通知=0) g.setColor(getBackground(); g.fillRect(0,0,200,200); ggg.setColor(getBackground(); ggg.fillRect(0,0,200,200); g.drawImage(image,0,0,200,200,this); public void mouseDragged(MouseEvent e) /对鼠标的输入进行判断并调用画图程序 x=(int)e.getX(); y=(int)e.getY(); Point p=new Point(x,y); v.addElement(p); repaint(); /添加鼠标触发事件 public void mouseMoved(MouseEvent e) public void mousePressed(MouseEvent e) public void mouseReleased(MouseEvent e) v.removeAllElements(); public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e)public void mouseClicked(MouseEvent e) public void update(Graphics g) paint(g); public void actionPerformed(ActionEvent e) / 用来完成图像生成的相应事件操作 if(e.getSource()=橡皮) 橡皮擦通知=1; 清除通知=0 ; else if(e.getSource()=清除) 清除通知=1; 橡皮擦通知=0; repaint(); else if(e.getSource()=画笔) 橡皮擦通知=0; 清除通知=0; else if(e.getSource()=保存) FileDialog savedialog=new FileDialog(window,保存图型到JPG格式,FileDialog.SAVE);/ 设置保存图型到JPG格式 savedialog.setVisible(true); if(savedialog.getFile()!=null) try String fileName=savedialog.getFile(); FileOutputStream out=new FileOutputStream(fileName); JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out); JPEGEncodeParam param=encoder.getDefaultJPEGEncodeParam(image); param.setQuality(1.0f,false); encoder.setJPEGEncodeParam(param); encoder.encode(image); out.close(); catch(Exception EE) else if(e.getSource()=获取屏幕)/ 用来获取屏幕 Robot robot=null; try robot=new Robot(); catch(Exception er) Rectangle screenRect=null; int width=getToolkit().getScreenSize().width; int height=getToolkit().getScreenSize().height; screenRect=new Rectangle(0,0,width,height); window.setVisible(false); this.window.setVisible(false); image=robot.createScreenCapture(screenRect); window.setVisible(true); repaint(); else if(e.getSource()=调色板)/用来设置调色板 Color tempColor=JColorChooser.showDialog(window,调色板,画笔颜色); if(tempColor!=null) 画笔颜色=tempColor; 画笔.setForeground(画笔颜色); else if(e.getSource()=绘制图形)/用来设置绘制图形 window.dispose(); this.window.dispose(); MakeJPEG canvas=new MakeJPEG(); public static void main(String args) new MakeJPEG(); 2.3.2运行结果主函数main()调用MakeJPEG()继承函数,通过继承函数设置主界面,然后通过事件监听和事件响应函数实现图形编辑系统的功能,该图像生成系统的主界面图并打开调色板如图:第3章 总结作为一名计算机网络技术大二的学生,我觉得能做类似的课程设计是十分有意义,而且是十分必要的。在已度过的大二的时间里我们大多数接

温馨提示

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

评论

0/150

提交评论