package mypict;
import java.awt.*;
import javax.swing.JPanel;
import java.awt.event.*;
import java.awt.image.*;
import java.awt.geom.*;
import javax.swing.*;
class TestPanel
extends JPanel
{
BorderLayout borderLayout1 = new BorderLayout();
BufferedImage bi, biSrc, biDest;
Graphics2D big;
Image im;
int w, h, flag;
float scaleFactor = 1.0f;
float offset = 0.0f;
public TestPanel()
{
try
{
jbInit();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
void jbInit() throws Exception
{
this.setLayout(borderLayout1);
Panel pdown;
pdown = new Panel();
Button sharpen = new Button("sharpen");
Button blur = new Button("blur");
Button edge = new Button("edge");
Button reset = new Button("reset");
pdown.setBackground(Color.lightGray);
pdown.setLayout(new GridLayout(2, 0));
pdown.add(sharpen);
pdown.add(blur);
pdown.add(edge);
pdown.add(reset);
this.setLayout(new BorderLayout());
this.add(pdown, BorderLayout.SOUTH);
MediaTracker tracker = new MediaTracker(this);
im = Toolkit.getDefaultToolkit().getImage("m.jpg");
tracker.addImage(im, 0);
try
{
tracker.waitForID(0);
}
catch (Exception e)
{
e.printStackTrace();
}
w = im.getWidth(this);
h = im.getHeight(this);
biSrc = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
big = biSrc.createGraphics();
big.drawImage(im, 0, 0, this);
biDest = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
bi = biSrc;
sharpen.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
sharpen_actionPerformed(e);
repaint();
}
});
edge.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
edge_actionPerformed(e);
repaint();
}
});
blur.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
blur_actionPerformed(e);
repaint();
}
});
reset.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
reset_actionPerformed(e);
repaint();
}
});
}
public void sharpen_actionPerformed(ActionEvent e)
{
float data[] =
{
-1.0f, -1.0f, -1.0f, -1.0f, 9.0f, -1.0f, -1.0f, -1.0f, -1.0f, };
Kernel kernel = new Kernel(3, 3, data);
ConvolveOp convolve = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);
convolve.filter(biSrc, biDest);
bi = biDest;
}
public void edge_actionPerformed(ActionEvent e)
{
float data[] =
{
0.0f, -1.0f, 0.0f, -1.0f, 4.0f, -1.0f, 0.0f, -1.0f, 0.0f, };
Kernel kernel = new Kernel(3, 3, data);
ConvolveOp convolve = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);
convolve.filter(biSrc, biDest);
bi = biDest;
}
public void blur_actionPerformed(ActionEvent e)
{
float data[] =
{
1.0f / 9.0f, 1.0f / 10.0f, 1.0f / 10.0f, 1.0f / 9.0f, 1.0f / 12.0f,
1.0f / 9.0f, 1.0f / 9.0f, 1.0f / 10.0f, 1.0f / 9.0f, };
Kernel kernel = new Kernel(3, 3, data);
ConvolveOp convolve = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);
convolve.filter(biSrc, biDest);
bi = biDest;
}
public void reset_actionPerformed(ActionEvent e)
{
bi = biSrc;
}
public void paint(Graphics g)
{
Graphics2D g2d = (Graphics2D)g;
g2d.drawImage(bi,0,0,this);
}
}
public class TestFrame
extends Frame
{
public TestFrame()
{
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
TestPanel tp = new TestPanel();
add(tp);
}
public static void main(String[] args)
{
TestFrame f = new TestFrame();
f.setSize(250,400);
f.show();
}
}