今天做一个简单的美颜相机,完整代码附在文章末尾处。
- 功能:通过选择功能按钮来实现多种滤镜效果。
- 界面展示:
思路:
- UI
- initUI(),初始化界面;
- 添加监听器 创建监听器对象
- 获取Graphics(绘图类) 传入监听器中
- Listener
- 创建一个类实现监听器ActionListener接口,重写所有方法
- 在方法中可以获取按钮上的字符串,通过字符串,选择使用哪种滤镜来绘制图片
- ImageEff
- 把图片转换成一个二维整数数组;
- 用算法修改二维数组,然后再重新绘制,以实现多种不同的滤镜。
完整代码如下:
import javax.swing.*;
import java.awt.*;
public class ImageUI extends JFrame {
//创建监听器对象
ImageListener imageListener=new ImageListener();
public static void main(String[] args) {
ImageUI imageUI=new ImageUI();
imageUI.initUI();
}
//界面初始化
public void initUI(){
setTitle("图形图像处理");
setSize (800,800);
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
//居中显示
setLocationRelativeTo (null);
//添加布局
FlowLayout flow=new FlowLayout();
setLayout(flow);
//添加按钮
addButton();
//加载组件之后可视化
setVisible(true);
//获取getGraphics对象,传给监听器中的属性变量
imageListener.g=getGraphics();
}
public void addButton(){
String[] btnstrs ={"原图","马赛克","反片","脸部提亮","灰度","二值化","美白","油画","轮廓提取","撤回"};
for (int i = 0; i <btnstrs.length ; i++) {
JButton btn=new JButton(btnstrs[i]);
add(btn);
//按钮添加监听器
btn.addActionListener(imageListener);
}
}
}
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
public class ImageListener implements ActionListener {