通过一系列知识的学习和完善,我做出了一份简单的图像处理程序,运用到了一些基础方法,对于初学者的熟悉代码是有一定的辅助作用。
一.程序说明
1.引入窗体类并确定主函数作为程序入口。
2.添加监听器并设置多个按钮实现多种功能。
3.通过ImageIO.read (file)读取照片。
4.使用BufferedImage方法做到快速绘出图片操作。
二.方法介绍
首先确定一个窗体并在窗体上设置我们想要的功能:
public class ImageUI extends JFrame {
//在创建iu对象同时创建了listener对象
ImageListener listener=new ImageListener();
public static void main(String args[]){
ImageUI iu=new ImageUI();
iu.initUI();
}
public void initUI() {
setTitle ("图形图像处理");
setSize (1000,1000);
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo (null);//居中显示
// 添加布局
FlowLayout flow = new FlowLayout();
setLayout (flow);
addJButton();
setVisible(true);
//从窗体上获取画笔
Graphics g=this.getGraphics();
//将窗体上的画笔传递给监听器对象
listener.g=g;
listener.iu=this;
}
在设定按钮时,为了程序简洁,我们可以采用循环的方式:
public void addJButton(){
String[] btnstrs ={
"原图","马赛克","反片","灰度","二值化","怀旧","油画","轮廓提取",
};
for(int i=0;i<btnstrs.length;i++){
//在此添加循环结构从而实现按钮的显示
String btnstr = btnstrs[i];
JButton btn = new JButton (btnstr);
add(btn);
btn.addActionListener(listener);
}
}
我们可以发现,我们创建了一个listener对象,它是我们接下来给按钮添加监听器的关键,那么接下来我们给按钮加上监听器,并重写监听器中的方法:
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
public class ImageListener implements ActionListener{
//创建空指针来接收窗体上获取的对象
Graphics g;
ImageUI iu;
//在此创建is对象用来获取listener对象上的组件,如画笔(此处画笔即为ImageUI上获取到的画笔)
Imagesolve is=new Imagesolve();
//创建一个BufferedImage数组用来保存画完的照片
BufferedImage BuffingList[]=new BufferedImage[200];
int BuffingSize=0;
int[][] imagarr={};
public ImageListener(){
//构造方法,将窗体传递给Imagesolve
is.iu=iu;
imagarr=is.Imagearr("C:\\Users\\86177\\Pictur