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; [...]

Code Army Bolivia

24/3/10

Slide de videos de youtube en java

JAN29


Simple slide para cargar "vistas previas" de videos de youtube desde java y ejecutarlos despues en el navegador establecido en el sistema

Proyecto:
1. Se creo un JFrame en netbeans con la siguiente distribucion de objetos, esta clase interfaz se llama "jbanner.java"

2. Se creo una clase "slider.java"

import java.awt.Desktop;
import java.net.URI;
import java.awt.Desktop;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.JLabel;
/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class slider {
    private int lenvid;// cantidad de videos
    //para almacenar las imagenes en memoria
    private BufferedImage[] _image;
    // para los ID de los videos de youtube
    private String ID[];    
    private URL _url;     
    //para las imagenes del slider
    int _imagen1=1;
    int _imagen2=2;
    int _imagen3=3;
    int _imagen4=4;
       
    /* el constructor de la clase con los ID de los videos*/   
    public slider(String id[]){        
        this.ID = id;        
        lenvid=ID.length;
    }
    
    /* carga las imagenes de youtube en memoria */
    public void cargar_imagen(){
        _image = new BufferedImage[lenvid];  
        //se llena el buffer con la imagen
        for(int i=0; i<=lenvid-1;i++){
            try {       
                _url = new URL("http://i2.ytimg.com/vi/" + ID[i]+ "/default.jpg");
                _image[i] = ImageIO.read(_url);
            } catch (IOException ex) {
                Logger.getLogger(slider.class.getName()).log(Level.SEVERE, null, ex);
            }
        }    
    }      
   
  public BufferedImage getImage(int n){
        return _image[n];
   }
  
  /* Abre el video en el navegador web del sistema */
public void abrirURL(int i){
        try {            
            Desktop.getDesktop().browse(new URI("http://www.youtube.com/watch?v=" + ID[i]));
        } catch (IOException ex) {
            Logger.getLogger(slider.class.getName()).log(Level.SEVERE, null, ex);
        } catch (URISyntaxException ex) {
            Logger.getLogger(slider.class.getName()).log(Level.SEVERE, null, ex);
        }
 }
 
/* Coloca las imagenes en miniatura de los videos de youtube en los objetos JLabel */
 public void setImagen(JLabel j1,JLabel j2,JLabel j3,JLabel j4){      
    j1.setIcon(new javax.swing.ImageIcon(getImage(_imagen1)));
    j1.repaint();
    j2.setIcon(new javax.swing.ImageIcon(getImage(_imagen2)));
    j2.repaint();
    j3.setIcon(new javax.swing.ImageIcon(getImage(_imagen3)));
    j3.repaint();
    j4.setIcon(new javax.swing.ImageIcon(getImage(_imagen4)));
    j4.repaint();    
 }
 
 /* avanza en 1 el slider y actualiza las imagenes */
 public void  Next(JLabel j1,JLabel j2,JLabel j3,JLabel j4){
     if (_imagen1==lenvid-1){_imagen1=1;}
     else {_imagen1++;}
     if (_imagen2==lenvid-1){_imagen2=1;}
     else {_imagen2++;}
     if (_imagen3==lenvid-1){_imagen3=1;}
     else {_imagen3++;}
     if (_imagen4==lenvid-1){_imagen4=1;}
     else {_imagen4++;}      
     setImagen(j1,j2,j3,j4);      
 }
 
 /* retrocede en 1 el slider y actualiza las imagenes */
 public void  Prev(JLabel j1,JLabel j2,JLabel j3,JLabel j4){
     if (_imagen1==1){_imagen1=lenvid-1;}
     else {_imagen1--;}
     if (_imagen2==1){_imagen2=lenvid-1;}
     else {_imagen2--;}
     if (_imagen3==1){_imagen3=lenvid-1;}
     else {_imagen3--;}
     if (_imagen4==1){_imagen4=lenvid-1;}
     else {_imagen4--;}
     setImagen(j1,j2,j3,j4);     
 }
}

La clase "slide.java", esta compuesta por el constructor slide(String id[]), que recibe un Array de String que contiene los ID de los videos de youtube
ej:
URL: http://www.youtube.com/watch?v=L2dO4DzgjsA
ID: L2dO4DzgjsA

Tambien se tiene el metodo cargar_imagen(), como su nombre lo indica, carga en el Buffer las imagenes que se obtienen de youtube, mediante la llamada url de:

http://i2.ytimg.com/vi/" + ID + "/default.jpg

Almacena estas en memoria que es un Array del tipo  BufferedImage.

El metodo getImage(int n), retorna una imagen de memoria, especificado su posicion en el array con el parametro "n".

El metodo setImagen(JLabel j1,JLabel j2,JLabel j3,JLabel j4), coloca las imagenes en los controles JLabel que son pasados como parametros, estos JLabel son 4.

Los metodos Next() y Prev(), no hacen otra cosa que avanzar o retroceder en uno el SLIDE y actualizar las imagenes en los controles JLabel.

Por ultimo el metodo abrirURL(int i), abre una direcion web de youtube especificado por el parametro "i"


Desktop.getDesktop().browse(new URI("http://www.youtube.com/watch?v=" + ID[i]));

La implementacion en la interfaz "jbanner.java"


slider mislider;
String id[] = new String[3];

public jbanner() {
        initComponents()
        //se declaran los ID de los videos de youtube
        id[0]="cc6nGy3SM4c";    
        id[1]="L2dO4DzgjsA";
        id[2]="fUYBC_YXxWQ";
        mislider = new slider(id);
        mislider.cargar_imagen();
        mislider.setImagen(jvideo1, jvideo2, jvideo3, jvideo4)
}
//evento para avanzar una posicion en el slide
private void lbNextMouseClicked(java.awt.event.MouseEvent evt) {
       mislider.Next(jvideo1, jvideo2, jvideo3, jvideo4);
}   
//evento para abrir una URL desde java
private void jvideo3MouseClicked(java.awt.event.MouseEvent evt) {
        mislider.abrirURL(mislider._imagen3)
}   

creo que el codigo se entiende, es bastante obvio y por demas comentado

El codigo fuente en Netbeans 6.0 puedes descargarlo desde aqui.

1 comentarios:

Unknown dijo...

hola muy bueno el programa quisieras que isieras un ejemplo de un SystemTray si pudieras

Post recomendado