版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、北京邮电大学世纪学院实习报告实 习 报 告 课程名称 专业实习 实习题目 基于java的图形图像数据处理 专 业 电子信息工程 班 级 学号 学生姓名 实习成绩 指导教师 2012年 2 月目录1. 实习目的21.1实习题目21.2系统功能21.3系统处理的数据32实习内容33实现方法33.1 创建工程33.2图片的显示43.2.1 一些关键字的作用43.2.2显示图片53.2.3 实现显示63.3 图片的放大63.3.1 放大63.3.2 实现放大73.4 图片的缩小73.4.1 缩小73.4.2 实现缩小83.5 图片的切割83.5.1 切割83.5.2 实现切割93.6 图片的黑白变换:
2、93.6.1 黑白变换93.6.2 实现黑白变换103.7 图片的格式转换103.7.1 格式转换103.7.2 实现格式转换114.实习结论125.参考文献126.附录131. 实习目的学习并理解常见图片处理的方法原理。综合运用Java基础(变量,选择,循环,数组,方法,类与对象)知识来解决一些复杂的实际问题。巩固已学知识,训练程序编写,分析和调试的能力。1.1 实习题目 基于JAVA的图形图像数据处理1.2 系统功能 掌握加载和使用第三方提供的类与方法,使用第三方的picture类,来创建并显示图片对象。学习计算机内图片的表示与存储原理,图片颜色的表示原理。掌握使用循环通过图片像素改变图片
3、颜色的方法。利用嵌套循环遍历像素,从而掌握复制,改造,旋转,黑白,剪切和缩放图片的方法。掌握有选择性的编辑图片的方法。图11 系统功能开始界面显示缩小放大切割类型转换彩色黑白结束吗?结束1.3系统处理的数据图12 源图片2实习内容使用JAVA语言实现图片处理功能的应用程序,掌握加载和使用第三方提供的类与方法,使用第三方的picture类,来创建并显示图片对象。学习计算机内图片的表示与存储原理,图片颜色的表示原理。掌握使用循环通过图片像素改变图片颜色的方法。利用嵌套循环遍历像素,从而掌握复制,改造,黑白,剪切和缩放图片的方法。掌握有选择性的编辑图片的方法。3实现方法3.1 创建工程打开MyEcl
4、ipse软件,输入地址F:lzx后进入软件,创建java project,创建package。图31 创建完工程3.2图片的显示 创建一个主class和一个class用于显示图片。在主class中建立主函数,主函数的一般写法如下:public static void main(String args)3.2.1 一些关键字的作用(1)public关键字,这个好理解,声明主函数为public就是告诉其他的类可以访问这个函数。(2)static关键字,告知编译器main函数是一个静态函数。也就是说main函数中的代码是存储在静态存储区的,即当定义了类以后这段代码就已经存在了。如果main()方法没
5、有使用static修饰符,那么编译不会出错,但是如果你试图执行该程序将会报错,提示main()方法不存在。因为包含main()的类并没有实例化(即没有这个类的对象),所以其main()方法也不会存。而使用static修饰符则表示该方法是静态的,不需要实例化即可使用。(3)void关键字表明main()的返回值是无类型。(4)参数String args。3.2.2显示图片在主class中输入主要函数:import java.awt.*,利用swing结构。引用图片:static Image img = new ImageIcon("F:/2.jpg").getImage ()
6、;设置窗口大小:JFrame jf = new JFrame(); jf.setSize (1100,700);后续结构如下: JTabbedPane tabbedPane = new JTabbedPane();tabbedPane.add("显示图片", new Xianshi(img);jf.add(tabbedPane);jf.setTitle ("作品");jf.setLocationRelativeTo (null);jf.setVisible(true);在另一个class中实现显示图片:public void paint(Graphics
7、 g) g.drawImage(img,0,0,this);3.2.3 实现显示图32 显示图片3.3 图片的放大3.3.1 放大创建一个class用于实现图片的放大。public void paint(Graphics g) int h = img.getHeight(this);int w = img.getWidth(this);g.drawImage(img, 0, 0, w * 2, h * 2, this);设置h和w为图片的高和宽,使图片显示时为原图高与宽的两倍。3.3.2 实现放大图33 放大3.4 图片的缩小3.4.1 缩小创建一个class用于实现图片的放大。public
8、void paint(Graphics g) int h = img.getHeight(this);int w = img.getWidth(this);g.drawImage(img, 0, 0, w / 2, h / 2, this);设置h和w为图片的高和宽,使图片显示时为原图高与宽的一半。3.4.2 实现缩小图34 缩小3.5 图片的切割3.5.1 切割在之前建立的package包内再建立之前的java图像函数,主要利用ImageFilter和cutFilter功能实现,简要功能结构如下:public class Q extends JLabel ImageFilter cutFil
9、ter =new CropImageFilter(125,50,175,175); img= createImage(new FilteredImageSource(image.getSource(),cutFilter);3.5.2 实现切割图35 切割3.6 图片的黑白变换:3.6.1 黑白变换要实现图片的黑白转换,就要利用一系列改变灰度的函数,主要有modelStyle和ColorModel等。另外利用的语句有int CS_MAX=0,int CS_FLOAT=1,getRed(pixel)*0.3+sourceModel.getGreen(pixel)*0.59+sourceModel
10、.getBlue(pixel)*0.11。其中主要改变RGB的方法如下: public int getAlpha(int pixel) return sourceModel.getAlpha(pixel); public int getRed(int pixel) return getGrayLevel(pixel); public int getGreen(int pixel) return getGrayLevel(pixel); public int getBlue(int pixel) return getGrayLevel(pixel); public int getRGB(int
11、pixel) int gray=getGrayLevel(pixel);3.6.2 实现黑白变换图36 黑白变换3.7 图片的格式转换3.7.1 格式转换实现格式变化,有javax语言和swing语句,其中需要设置如setBounds(170, 80, 160, 30)语句。以及设置改变格式的按钮buttonPng = new JButton("转换为PNG格式")和buttonBmp = new JButton("转换为BMP格式")。部分功能结构如下:jFileSave.setFileFilter(new FileNameExtensionFilte
12、r("PNG格式文件(.png)", "png");elsejFileSave.setFileFilter(new FileNameExtensionFilter("BMP格式文件(.bmp)", "bmp");ImageIO.write(ImageIO.read(new File("F:/1.jpg"), bPng?"PNG":"BMP", new File(filename+(bPng?".PNG":".BMP"
13、); catch (IOException e) e.printStackTrace(); 之后还要定义输入和输出文件位置。3.7.2 实现格式转换图37 格式转换(a)图38 点击按钮后提示保存4.实习结论为期一周的小学期就要结束了,我们在学校机房进行了为期一周的JAVA实训。现在即将结束了,回首小学期的java学习,重点还是在学习概念等一些常识性的东西。JAVA的学习,是件既快乐又痛苦的事情。就好像JAVA的名字一样,一杯香浓的咖啡绝对不是甜甜的,而是甜中带有苦,苦中带着浓浓的芳香。同样,学习他的快乐的是你能领略到大师们的天才思想,与他们一起享受着程序设计的乐趣。痛苦的是由于其广泛的应用性
14、使它变得不仅仅是一门程序设计语言那么简单了,今天,JAVA涉及的技术越来越来多,知识范围也极其广泛。我们是不是就因此被他吓到了呢? 我的回答当然是否定的。我想,任何知识只要掌握了正确的学习方法,都是可以做到为我所用并融会贯通的。当我们正式准备学习实训java编程技术时,让我倍感兴奋。开始学习后也并非是想象中那样顺利,开始的学习让我异常感到学习任务的艰巨,因为学习中我遇到了很多以前未曾遇到的难点,有时难免冥思苦想也无济于事,通过我积极努力,同时请教老师和其他同学,我们顺利的化解了一道道的障碍。这让我不断的对学习技术又有了新的认识:学习中我们必须边总结边学习,开始阶段对老师交代的任何方法和类都不要
15、放过,不管是否简单与否都要乐于地接受,因为老师肯定有他的道理,相信老师走过的路比我们长,那么其经验也就肯定比我们丰富。在学习的过程中也体会到,遇到问题也要请教。不然的话自己一个人去做的话会花很多的时间,我在做这个在线考试的项目中,其中也问到过许多问题,通过同学的帮助下解决了,提高了程序的开发进程。其他的同学有问题的话我也是给他们尽量解决。我认为学习知识的过程当中就应该是相互学习相互进步的。Java是面在的主流技术我会努力将它学好,虽然学习java的路还很常,但我会继续走下去。在这里,我非常感谢老师,在老师的帮助和指导下,我克服了Java学习上的一道道难关,课上认真听讲,摘好必要的笔记,并通过自
16、己课后的不断消化学习,现在自己已经基本掌握了java的基础知识,并等待知识的进一步提升。5.参考文献1 美Rogers Cadenhead. Java编程入门经典M.梅兴文译.第4版.北京:人民邮电出版社,20072 美Bruce Eckel. Thinking In JavaM.英文第4版.北京:机械工业出版社,20073 陈轶.姚晓昆编著.Java程序设计实验指导M.北京:清华大学出版社,20064 杨昭编著.二级Java语言程序设计教程M.北京:中国水利水电出版社,20065 赵文靖编著.Java程序设计基础与上机指导M.北京:清华大学出版社,20066 赵毅主编.跨平台程序设计语言Ja
17、vaM.西安:西安电子科技大学出版社,20067 王路群.Java高级程序设计M.北京:中国水利水电出版社,20068 雍俊海编著.Java程序设计习题集M.北京:清华大学出版社,20069 朱福喜.Java语言习题与解析M.北京:清华大学出版社,200610 吴其庆.Java程序设计实例教程M.北京:冶金工业出版社,20066.附录(源程序清单)框架package lzx;import java.awt.*;import javax.swing.*;public class Kuangjia static Image img = new ImageIcon("F:/ 2.jpg&q
18、uot;).getImage();/* * param args */public static void main(String args) / TODO Auto-generated method stubJFrame jf = new JFrame();jf.setSize(1100, 700);JTabbedPane tabbedPane = new JTabbedPane();tabbedPane.add("显示", new Xianshi(img);tabbedPane.add("放大", new Fangda(img);tabbedPane
19、.add("缩小", new Suoxiao(img);tabbedPane.add("切割", new Qiege(img);tabbedPane.add("黑白", new Heibai(img);tabbedPane.add("转换", new Zhuanhuan();jf.add(tabbedPane);jf.setTitle("图像处理");jf.setLocationRelativeTo(null);jf.setVisible(true);jf.setDefaultCloseOper
20、ation(JFrame.EXIT_ON_CLOSE);显示package lzx;import java.awt.*;import javax.swing.*;public class Xianshi extends JLabel Image img;public Xianshi(Image image) img = image;public void paint(Graphics g) g.drawImage(img, 0, 0, this);放大package lzx;import java.awt.*;import javax.swing.*;public class Fangda e
21、xtends JLabel Image img;public Fangda(Image image) img = image;public void paint(Graphics g) int h = img.getHeight(this);int w = img.getWidth(this);g.drawImage(img, 0, 0, w * 2, h * 2, this);缩小package lzx;import java.awt.*;import javax.swing.*;public class Suoxiao extends JLabel Image img;public Suo
22、xiao(Image image) img = image;public void paint(Graphics g) int h = img.getHeight(this);int w = img.getWidth(this);g.drawImage(img, 0, 0, w / 2, h / 2, this);切割package lzx;import java.awt.Graphics;import java.awt.Image;import java.awt.image.*;import javax.swing.JLabel;public class Qiege extends JLab
23、el Image img;public Qiege(Image image) ImageFilter cutFilter = new CropImageFilter(125, 50, 500, 500);img = createImage(new FilteredImageSource(image.getSource(), cutFilter);public void paint(Graphics g) g.drawImage(img, 0, 0, null);黑白转换package lzx;import java.awt.*;import java.awt.image.ColorModel;
24、import java.awt.image.CropImageFilter;import java.awt.image.FilteredImageSource;import java.awt.image.ImageFilter;import java.awt.image.RGBImageFilter;import javax.swing.*;public class Heibai extends JLabel public class GrayFilter extends RGBImageFilter int modelStyle;public GrayFilter() modelStyle
25、= GrayModel.CS_MAX;canFilterIndexColorModel = true;public GrayFilter(int style) modelStyle = style;canFilterIndexColorModel = true;public void setColorModel(ColorModel cm) if (modelStyle = GrayModel.CS_MAX) substituteColorModel(cm, new GrayModel(cm); else if (modelStyle = GrayModel.CS_FLOAT) substit
26、uteColorModel(cm, new GrayModel(cm, modelStyle);public int filterRGB(int x, int y, int pixel) return pixel;public class GrayModel extends ColorModel public static final int CS_MAX = 0;public static final int CS_FLOAT = 1;ColorModel sourceModel;int modelStyle;public GrayModel(ColorModel sourceModel)
27、super(sourceModel.getPixelSize();this.sourceModel = sourceModel;modelStyle = 0;public GrayModel(ColorModel sourceModel, int style) super(sourceModel.getPixelSize();this.sourceModel = sourceModel;modelStyle = style;public void setGrayStyle(int style) modelStyle = style;protected int getGrayLevel(int
28、pixel) if (modelStyle = CS_MAX) return Math.max(sourceModel.getRed(pixel),Math.max(sourceModel.getGreen(pixel),sourceModel.getBlue(pixel); else if (modelStyle = CS_FLOAT) return (int) (sourceModel.getRed(pixel) * 0.3+ sourceModel.getGreen(pixel) * 0.59 + sourceModel.getBlue(pixel) * 0.11); else retu
29、rn 0;public int getAlpha(int pixel) return sourceModel.getAlpha(pixel);public int getRed(int pixel) return getGrayLevel(pixel);public int getGreen(int pixel) return getGrayLevel(pixel);public int getBlue(int pixel) return getGrayLevel(pixel);public int getRGB(int pixel) int gray = getGrayLevel(pixel
30、);return (getAlpha(pixel) << 24) + (gray << 16) + (gray << 8) + gray;Image img;public Heibai(Image image) ImageFilter grayFilter = new GrayFilter();img = createImage(new FilteredImageSource(image.getSource(), grayFilter);public void paint(Graphics g) g.drawImage(img, 0, 0, null);格式
31、转换package lzx;import java.awt.event.*;import java.io.*;import javax.imageio.ImageIO;import javax.swing.*;import javax.swing.filechooser.FileNameExtensionFilter;public class Zhuanhuan extends JLabel implements MouseListener JButton buttonPng;JButton buttonBmp;public Zhuanhuan() buttonPng = new JButton("转换为PNG格式");buttonPng.setBounds(80, 80, 160, 30);buttonPng.addMouseListener(this);this.add(buttonPng);butto
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 单位总务科工作制度
- 卫健办公室工作制度
- 厨房切配工工作制度
- 县文化扶贫工作制度
- 县视频中心工作制度
- 双季稻生产工作制度
- 反对四天半工作制度
- 受理旅游投诉工作制度
- 口腔影像室工作制度
- 唐山ab岗工作制度
- 2026年广东省广轻控股集团有限公司校园招聘笔试模拟试题及答案解析
- 快递员服务规范与操作流程(标准版)
- 二类医疗器械经营质量管理制度及工作程序
- 湖南省2026届高三九校联盟第二次联考语文试卷(含答案详解)
- 汽轮机润滑油系统课件
- 2026年高考数学二轮复习专题13 椭圆、双曲线与抛物线(复习讲义)(解析版)
- 南瑞集团在线测评试题
- 管道支架施工专项措施
- 设计院安全生产管理制度
- DB15∕T 2158-2021 彩色马铃薯品种“紫彩1号”栽培技术规程
- 八年级必背古诗词合集
评论
0/150
提交评论