package Test;
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.awt.image.ConvolveOp;
import java.awt.image.Kernel;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class BlurImageFrame extends JFrame {
private BufferedImage image;
private BlurImagePanel blurImagePane=null;
public static void main(String args[]){
BlurImageFrame frame=new BlurImageFrame();
frame.setVisible(true);
}
public BlurImageFrame(){
super();
this.setBounds(100,100,500,400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("图片模糊");
final JPanel panel=new JPanel();
blurImagePane=new BlurImagePanel();
this.add(blurImagePane);
getContentPane().add(panel,BorderLayout.SOUTH);
final JButton button_blur=new JButton();
button_blur.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
float[] elements=new float[9];
for(int i=0;i<9;i++){
elements[i]=0.11f;
}
convolve(elements);
}
});
button_blur.setText("模 糊");
panel.add(button_blur);
final JButton button_exit=new JButton();
button_exit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
button_exit.setText("退 出");
panel.add(button_exit);
}
private void convolve(float[] elements){
Kernel kernel=new Kernel(3,3,elements);
ConvolveOp op=new ConvolveOp(kernel);
if(image==null){
return;
}
image=op.filter(image,null);
repaint();
}
class BlurImagePanel extends JPanel{
public BlurImagePanel(){
Image img=null;
try {
img=ImageIO.read(new File("src/image/imag.jpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
image=new BufferedImage(img.getWidth(null),img.getHeight(null),BufferedImage.TYPE_INT_RGB);
image.getGraphics().drawImage(img,0,0,null);
}
public void paint(Graphics g){
g.drawImage(image, 0, 0,null);
}
}
}