JAVA语言
课程设计设计题目:图像放大缩小器
任务目标:做一个用户图形界面的图像放大缩小器,可以对符合格式的图像文件进行放大与缩小。
目录
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程序中所使用的类
类名:public class ScaleImageDemo
作用:主类
继承的父类:JFrame
类名:class ButtonActionListener
作用:按钮事件处理
实现接口:ActionListener
类名:class ScalePaner
作用:显示图像的面板
继承的父类:Jpanel
2.2.主要成员方法
public ScaleImageDemo() 构造方法
public void fileSelect() 图像文件选择器
public static void main(String[] args) 驱动
public void actionPerformed(ActionEvent e) 按钮事件处理
public void l
oadImage(String fileName) 载入图像
public void paint(Graphics g) 重载容器的paintComponent()方法
2.3内部类
类名:class ButtonActionListener
作用:按钮事件处理
实现接口:ActionListener
类名:class ScalePane
作用:显示图像的面板
继承:Jpanel
2.3异常处理说明
异常处理源码:
try {
mt.waitForAll();
} catch (Exception ex)
{
ex.printStackTrace();
}
作用:等待图片加载、输出出错信息
2.4算法
2.4.1扫描图像文件
public boolean accept(File file)
{String name = file.getName().toLowerCase(); //获取文件名
Return name.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为空则直接返回,也就是
列表中不存在文件。
BufferedImage filteredBufImage =new BufferedImage((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