Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Efecto Sepia

Efecto Sepia


Ultimamente he estado jugando con filtros y efectos sobre imagenes desde java, en la mayoria de los casos manipulando los valores RGB de cada pixel, espero les sea de interes, pueden ver mas de 15 filtros que he publicado en My Java Zone


Imagen


ver imagen


Codigo


Clase Principal



package clases;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextField;

public class Principal extends JFrame {

ImageIcon imagenSeleccionada;
JLabel limgOriginal, limgGrises;
JTextField txtNombreImg;
BufferedImage imgsel;

public Principal() {

JPanel pprincipal = new JPanel();
pprincipal.setLayout(new BorderLayout());

JPanel ptitulo = new JPanel();
JLabel ltitulo = new JLabel("Sepia");
ptitulo.add(ltitulo);

JPanel pimagenes = new JPanel(new BorderLayout());
JSplitPane split = new JSplitPane();
split.setResizeWeight(0.5);
JPanel pimagenoriginal = new JPanel();
limgOriginal = new JLabel();
pimagenoriginal.add(limgOriginal);
JScrollPane spimgoriginal = new JScrollPane(pimagenoriginal);
split.setLeftComponent(spimgoriginal);
JPanel pimagengrises = new JPanel();
limgGrises = new JLabel();
pimagengrises.add(limgGrises);
JScrollPane spimggrises = new JScrollPane(pimagengrises);
split.setRightComponent(spimggrises);

pimagenes.add(split);

JPanel pselector = new JPanel();
txtNombreImg = new JTextField(30);
JButton btn = new JButton("Seleccionar");
btn.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent arg0) {
JFileChooser selector = new JFileChooser();
int r = selector.showOpenDialog(null);
if (r == JFileChooser.APPROVE_OPTION) {
try {
imgsel = ImageIO.read(selector.getSelectedFile());
imagenSeleccionada = new ImageIcon(imgsel);
limgOriginal.setIcon(imagenSeleccionada);
limgGrises.setIcon(new ImageIcon(aplicarFiltro()));
txtNombreImg.setText(selector.getSelectedFile()
.getName());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
pselector.add(txtNombreImg);
pselector.add(btn);

pprincipal.add(ptitulo, BorderLayout.NORTH);
pprincipal.add(pimagenes, BorderLayout.CENTER);
pprincipal.add(pselector, BorderLayout.SOUTH);

add(pprincipal);

setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBounds(0, 0, 800, 600);
setLocationRelativeTo(null);

}

public BufferedImage aplicarFiltro() {
BufferedImage bi = null;
if(imgsel != null ) {
bi = new BufferedImage(imgsel.getWidth(), imgsel.getHeight(),
imgsel.getType());
Color colorImagen = null; int red = 0, green = 0, blue = 0;
for(int i = 0; i 255)?255:red,
(green>255)?255:green, (blue>255)?255:blue);
} catch (Exception e) {}
bi.setRGB(i, j, colorImagen.getRGB());
}
}
}
return bi;
}

public static void main(String[] args) {
new Principal();
}

}

abril 13, 2013 | Registered Commenterroger1345