Capturar webcam con VB.NET

¿Que haremos? Crearemos una aplicación en Visual Studio, la cual hará uso de una webcam para capturar el video en frames independientes y depositarlos en memoria para despues mostralos al usuario a través de un picturebox y un Timer para crear la ilusión de movimiento. ¿Porque lo haremos? Porque es justo y necesario ¿Que necesitamos? [...]

Envío de correo con JavaMail/Netbeans

JavaMail es una expansión de Java que facilita el envío y recepción de e-mail desde código java. JavaMail implementa el protocolo SMTP (Simple Mail Transfer Protocol) así como los distintos tipos de conexión con servidores de correo -TLS, SSL, autentificación con usuario y password, etc [Según SantaWikipedia] ¿Qué necesitamos? JavaMail 1.4.5 Java y Netbeans 6.9 [...]

Proyecto de base de datos Firebird VB

En este proyecto realizaremos una aplicación de base de datos Firebird con el lenguaje de programación de Visual Basic de Microsoft, este proyecto tendrá las funciones básicas de gestión INSERT, DELETE, UPDATE y una interfaz de usuario para utilizarlas. ¿Que necesitamos? Visual Studio 2008 o superior Firebird última versión Firebird ADO.NET Data Provider. Conocimientos básicos [...]

Imprimir imagen con Print

La siguiente clase hace uso de PRINT para imprimir una imagen que se encuentra en un variable de tipo FileInputStream, esta clase a su vez es implementada desde una interfaz que hace fácil su uso, la clase así como todo el proyecto esta comentado. import java.io.File; import javax.print.Doc; import java.io.IOException; import javax.print.DocFlavor; import javax.print.SimpleDoc; import java.io.FileInputStream; [...]

28/2/11

Invertir imagen en Java (Filtro Negativo)

JAN29

Java nos permite mediante la clase BufferedImage manipular archivos de imagen byte por byte, por ejemplo para conseguir el efecto de "negativo" para una foto como hace el filtro de photoshop, corel o gimp.

Para este ejemplo, utilizaremos una foto de "rikku", un personaje de Final Fantasy, con un lindo par de ojos ;) para invertir la imagen, obtendremos todos los pixeles de la foto, de cada pixel se extraeran sus valores RGB (rojo, verde, azul) y se les restara 255,este nuevo  valor, se insertara en una nueva imagen de tipo BufferedImag, esto se realizara para cada pixel de la image. Osea:

255 - Valor_R = Valor_R_invertido
255 - Valor_G = Valor_G_invertido
255 - Valor_B = Valor_B_invertido

La clase que hace todo esto es:


import java.awt.Color;
import java.awt.image.BufferedImage;
/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class invertir {
    private BufferedImage foto;
    private int r,g,b;
    private Color color;
    public invertir(){}
     
 /* Invierte los bytes de una imagen */
  public void SetInvertir(BufferedImage f){
        this.foto = f;
        for(int i=0;i<foto.getWidth();i++){
          for(int j=0;j<foto.getHeight();j++){
                //se obtiene el color del pixel
                color = new Color(foto.getRGB(i, j));
                //se extraen los valores RGB
                r = color.getRed();
                g = color.getGreen();
                b = color.getBlue();
                //se coloca en la nueva imagen con los valores invertidos
                foto.setRGB(i, j, new Color(255-r,255-g,255-b).getRGB());                                                                    
          }
        }        
    }
    
    public BufferedImage getFoto(){
        return this.foto;
    }  
    
}
Esta simple clase, recibe un objeto de tipo BufferedImage y procesa byte por byte los colores de la imagen y las invierte, esta clase tambien retorna una imagen del tipo BufferedImage invertida.

Implementando esta clase y pasando como parametro la imagen anterior, obtenemos como resultado la imagen invertida.

5 comentarios:

Anónimo dijo...

gracias por todos estas enseñanzas que nos brindas en verdad eres grande en verdad lo eres.
gracias ha este blog he aprendido mucho.
si no es mucha molestia podrías poner algo de como insertar archivos swf en netbeans es que lo necesito para un proyecto muchas gracias.

Anónimo dijo...

hola estuve probando el codigo y efectivamente no tiene ningun error. sin embargo me gustaria saber en que momento se carga la imagen; he intentado de dos formas pero ninguna me funciona.
Porfavor expliquenme paso a paso, sucede que soy el tipo de personas que aprenden con manzanitas y peritas.

Anónimo dijo...

perrin aka este metodo recibe como parametro la imagen....

public void
SetInvertir(BufferedImage f){

tienes que crear un metodo aparte para cargar la imgen y enviarla al metodo

Anónimo dijo...

Que tal, sabes excelente tu exposición, el detalle es que he tenido problemas para cargar la imagen en un JFrame, si hay alguna manera de contactarte, te lo agradeceria, saludos.

Mara dijo...

Excelente! Unicamente necesite colocar un return this.imageActual que era el nombre de mi metodo, pero funciono perfecto! Muchas gracias!

Post recomendado