package 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"); } }