JAVA图片浏览器论文.docx

上传人:b****9 文档编号:23321674 上传时间:2023-05-16 格式:DOCX 页数:14 大小:222.58KB
下载 相关 举报
JAVA图片浏览器论文.docx_第1页
第1页 / 共14页
JAVA图片浏览器论文.docx_第2页
第2页 / 共14页
JAVA图片浏览器论文.docx_第3页
第3页 / 共14页
JAVA图片浏览器论文.docx_第4页
第4页 / 共14页
JAVA图片浏览器论文.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

JAVA图片浏览器论文.docx

《JAVA图片浏览器论文.docx》由会员分享,可在线阅读,更多相关《JAVA图片浏览器论文.docx(14页珍藏版)》请在冰豆网上搜索。

JAVA图片浏览器论文.docx

JAVA图片浏览器论文

JAVA语言课程设计

设计题目:

图像放大缩小器

 

任务目标:

做一个用户图形界面的图像放大缩小器,可以对符合格式的图像文件进行放大与缩小。

 

学院:

软件学院

班级:

应用技术四班

姓名:

韩公达

学号:

410820010414

日期:

2009/7/8

目录

JAVA语言课程设计1

目录2

1设计要求1

1.1程序要求1

1.2运行效果1

1.2.1主界面1

1.2.2打开文件选择对话框2

1.2.3载入文件2

1.2.4放大图片3

1.2.4缩小图片3

2程序整体设计说明3

2.1程序中所使用的类3

2.2.主要成员方法4

2.3内部类4

2.3异常处理说明4

2.4算法5

2.4.1扫描图像文件5

2.4.2放大与缩小5

2.4.3过滤图像5

2.4.4在面板上画图6

2.5程序中所涉及的包6

2.6源代码6

参考文献12

致谢13

1设计要求

1.1程序要求

本程序是一个图形用户界面程序,可一对图像文件进行放大与缩小,刚载入的文件显示原始尺寸,图像的内设格式是.jif、.jpg、.jpeg。

1.2运行效果

1.2.1主界面

图1-1主界面

1.2.2打开文件选择对话框

图1-2打开文件选择对话框

1.2.3载入文件

图1-3载入文件

1.2.4放大图片

图1-4放大图片

1.2.4缩小图片

图1-5缩小图片

2程序整体设计说明

2.1程序中所使用的类

类名:

publicclassScaleImageDemo

作用:

主类

继承的父类:

JFrame

类名:

classButtonActionListener

作用:

按钮事件处理

实现接口:

ActionListener

类名:

classScalePaner

作用:

显示图像的面板

继承的父类:

Jpanel

2.2.主要成员方法

publicScaleImageDemo()构造方法

publicvoidfileSelect()图像文件选择器

publicstaticvoidmain(String[]args)驱动

publicvoidactionPerformed(ActionEvente)按钮事件处理

publicvoidloadImage(StringfileName)载入图像

publicvoidpaint(Graphicsg)重载容器的paintComponent()方法

2.3内部类

类名:

classButtonActionListener

作用:

按钮事件处理

实现接口:

ActionListener

类名:

classScalePane

作用:

显示图像的面板

继承:

Jpanel

2.3异常处理说明

异常处理源码:

try{

mt.waitForAll();

}catch(Exceptionex)

{

ex.printStackTrace();

}

作用:

等待图片加载、输出出错信息

2.4算法

2.4.1扫描图像文件

publicbooleanaccept(Filefile)

{Stringname=file.getName().toLowerCase();//获取文件名

Returnname.endsWith(".gif")||name.endsWith(".jpg")||name.endsWith(".jpeg")||file.isDirectory();}

作用:

判断文件是否可以接受。

2.4.2放大与缩小

放大图像:

if(button==jbZoomIn)

showImagePane.scaleX*=1.25;//图像x轴方向放大图片

showImagePane.scaleY*=1.25;//图像y轴方向放大图片

缩小图像:

if(button==jbZoomOut)

showImagePane.scaleX*=0.8;//图像x轴方向缩小图片

showImagePane.scaleY*=0.8;//图像y轴方向缩小图片

还原图像:

if(button==jbReset)

showImagePane.scaleX=1.0;//图像x轴方向放大图片还原为1.0

showImagePane.scaleY=1.0;//图像y轴方向放大图片还原为1.0

2.4.3过滤图像

if(bufImage==null)

return;

如果bufImage为空则直接返回,也就是列表中不存在文件。

BufferedImagefilteredBufImage=newBufferedImage((int)(image.getWidth(this)*scaleX),(int)(image.getHeight(this)*scaleY),BufferedImage.TYPE_INT_ARGB);

过滤图像,图片的类型颜色定义为整型的ARGB。

2.4.4在面板上画图

if(bufImage!

=null)列表中存在图片。

得出所绘图片的开始坐标:

X=(this.getWidth()-bufImage.getWidth())/2

Y=(this.getHeight()-bufImage.getHeight())/2

开始绘制图片:

Graphics2Dg2=(Graphics2D)g;

g2.drawImage(bufImage,(this.getWidth()-bufImage.getWidth())/2,(this.getHeight()-bufImage.getHeight())/2,this);

2.5程序中所涉及的包

java.awt.geom.*;

提供用于在与二维几何形状相关的对象上定义和执行操作的Java2D类。

java.awt.image.*;

提供创建和修改图像的各种类。

java.awt.color.*;

提供用于颜色空间的类。

2.6源代码

//韩公达制作

//@author韩公达

//图像缩小与放大

importjava.awt.*;

importjava.awt.event.*;

importjava.awt.image.*;

importjava.awt.color.*;

importjava.awt.geom.*;

importjavax.swing.*;

importjava.io.*;

publicclassScaleImageDemoextendsJFrame{

privateJPanelpanel=newJPanel();原按

privateJButtonjbFile=newJButton("打开图像文件");

privateJButtonjbZoomIn=newJButton("放大");

privateJButtonjbZoomOut=newJButton("缩小");

privateJButtonjbReset=newJButton("还原");

ScalePaneshowImagePane=newScalePane();

Containercontent=getContentPane();

//构造方法

publicScaleImageDemo(){

super("图像的缩小与放大");

//为按钮添加动作监听器

jbFile.addActionListener(newButtonActionListener());

jbZoomIn.addActionListener(newButtonActionListener());

jbZoomOut.addActionListener(newButtonActionListener());

jbReset.addActionListener(newButtonActionListener());

//把图像放大按钮、图像缩小按钮、图像还原按钮加入panel面板

panel.add(jbZoomIn);

panel.add(jbZoomOut);

panel.add(jbReset);

//把showImagePane

content.add(showImagePane,BorderLayout.CENTER);

content.add(jbFile,BorderLayout.NORTH);

content.add(panel,BorderLayout.SOUTH);

setSize(360,300);

setVisible(true);

setLocation(400,200);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

//使用文件选择器载入图像

publicvoidfileSelect(){

JFileChooserchooser=newJFileChooser();//实例化文件选择器

chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);//模式为仅打开文件

chooser.setCurrentDirectory(newFile("."));//设置文件选择器当前目录

//设置图像文件过滤器

chooser.setFileFilter(newjavax.swing.filechooser.FileFilter(){

publicbooleanaccept(Filefile){//可接受的文件类型

Stringname=file.getName().toLowerCase();//获取文件名

returnname.endsWith(".gif")

||name.endsWith(".jpg")

||name.endsWith(".jpeg")

||file.isDirectory();

}

publicStringgetDescription(){

return"图像文件";

}

});

intresult=chooser.showOpenDialog(this);//显示文件选择对话框

if(result==JFileChooser.APPROVE_OPTION){

StringfileName=chooser.getSelectedFile().getAbsolutePath();

showImagePane.loadImage(fileName);//截入图像并显示

}

}

publicstaticvoidmain(String[]args){

newScaleImageDemo();

}

//按钮事件处理类

classButtonActionListenerimplementsActionListener{

publicvoidactionPerformed(ActionEvente){

JButtonbutton=(JButton)e.getSource();

if(button==jbFile){

fileSelect();

}elseif(button==jbZoomIn){

showImagePane.scaleX*=1.25;//图像x轴方向放大因子

showImagePane.scaleY*=1.25;//图像y轴方向放大因子

showImagePane.applyFilter();//过滤图像

showImagePane.repaint();//重绘showImagePane面板

jbReset.setEnabled(true);

}elseif(button==jbZoomOut){

showImagePane.scaleX*=0.8;//图像x轴方向缩小因子

showImagePane.scaleY*=0.8;//图像y轴方向缩小因子

showImagePane.applyFilter();//过滤图像

showImagePane.repaint();//重绘showImagePane面板

jbReset.setEnabled(true);

}elseif(button==jbReset){

showImagePane.scaleX=1.0;//图像x轴方向放大因子还原为1.0

showImagePane.scaleY=1.0;//图像y轴方向放大因子还原为1.0

showImagePane.applyFilter();//过滤图像

showImagePane.repaint();//重绘showImagePane面板

jbReset.setEnabled(false);

}

}

}

//显示图像的面板

classScalePaneextendsJPanel{

Imageimage;

BufferedImagebufImage;//用于显示的缓冲区图像

BufferedImageoriginalBufImage;//原始缓冲区图像

cs2DbufImageG;//缓冲区图像的图形环境

doublescaleX=1.0;//图像水平方向的缩放因子

doublescaleY=1.0;//图像竖直方向的缩放因子

//截入图像

publicvoidloadImage(StringfileName){

image=this.getToolkit().getImage(fileName);//取得图像

MediaTrackermt=newMediaTracker(this);//实例化媒体加载器

mt.addImage(image,0);//增加图像到加载器中

try{

mt.waitForAll();//等待图片加载

}catch(Exceptionex){

ex.printStackTrace();//输出出错信息

}

originalBufImage=newBufferedImage(image.getWidth(this),image.getHeight(this),BufferedImage.TYPE_INT_ARGB);//创建原始缓冲区图像

bufImage=originalBufImage;

bufImageG=bufImage.createGraphics();//创建bufImage的图形环境

bufImageG.drawImage(image,0,0,this);//传输源图像数据到缓冲区图像中

repaint();//重绘组件

}

//过滤图像

publicvoidapplyFilter(){

if(bufImage==null)

return;//如果bufImage为空则直接返回

BufferedImagefilteredBufImage=newBufferedImage((int)(image.getWidth(this)*scaleX),(int)(image.getHeight(this)*scaleY),BufferedImage.TYPE_INT_ARGB);//过滤后的图像

AffineTransformtransform=newAffineTransform();//仿射变换对象

transform.setToScale(scaleX,scaleY);//设置仿射变换的比例因子

AffineTransformOpimageOp=newAffineTransformOp(transform,null);//创建仿射变换操作对象

imageOp.filter(originalBufImage,filteredBufImage);//过滤图像,目标图像在filteredBufImage

bufImage=filteredBufImage;//让用于显示的缓冲区图像指向过滤后的图像

repaint();//重绘组件

}

//重载容器的paintComponent()方法

publicvoidpaint(Graphicsg){

super.paintComponent(g);

if(bufImage!

=null){

Graphics2Dg2=(Graphics2D)g;

g2.drawImage(bufImage,(this.getWidth()-bufImage.getWidth())/2,(this.getHeight()-bufImage.getHeight())/2,this);//绘制图片

}

}

}}

 

参考文献

[1]《JAVA程序语言设计》马皓清华大学出版社

[2]《JAVA2程序设计实用教程》宋振会陈立电子工业出版社

[3]《JAVA编程思想》(美)BruceEckel侯捷(译)机械工业出版社

[4]《JAVA基础教程》耿祥义清华大学出版社

[5]《JAVA语言学习手册》PatrickNiemeyerJonatbanKmudsen林琪(译)中国电力出版社

致谢

[1]感谢河南理工计算机科学与技术学院陈玮老师,让我懂得了思想的重要性。

[2]感谢以上我所参考书籍的作者和出版社。

[3]感谢软件学院能够给我这个优越的学习环境。

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

当前位置:首页 > 法律文书 > 起诉状

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1