rendered paste bodypackage org.basic;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class BevelFilter extends JFrame
{
private JLabel _label;
private BufferedImage _image;
public BevelFilter(String imageFileName)
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
_label = new JLabel();
try
{
_image = bevelize(ImageIO.read(new File(imageFileName)));
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
ImageIcon icon = new ImageIcon(_image);
_label.setIcon(icon);
add(_label);
setVisible(true);
pack();
}
public BufferedImage bevelize(BufferedImage img)
{
// define filter kernel
double[][] _kernel =
{
{0.0, 1.0, 0.0},
{1.0, 1.0, 1.0},
{0.0, 1.0, 0.0}
};
double scale = 5.0;
for (int y = 1; y < img.getHeight()-1; y++)
{
for (int x = 1; x < img.getWidth()-1; x++)
{
double sum = 0.0;
for (int u = -1; u <= 1; u++)
{
for (int v = -1; v <= 1; v++)
{
double px = img.getRGB(x+v,y+u);
double co = _kernel[u+1][v+1];
sum = sum + co*px;
}
}
sum /= scale;
int rgb = (int)(Math.abs(sum));
img.setRGB(x, y, rgb);
}
}
return img;
}
public static void main(String[] args)
{
new BevelFilter("img.jpg");
}
}