JMF, Usando Camara desde Java y guardando imagen en Archivo o BD

JMF webcam java foto camara
JMF webcam java foto camara

Hola a todos, después del post de https://cmop17.wordpress.com/2010/01/14/jmf-usando-la-webcam-desde-java-y-guardando-una-imagen/ me sugirieron algunas cosas tales como Redimensionar adecuadamente la webcam, guardar la imagen en un BD, además del fichero, permitir cambiar la resolución de la cámara, en aquel post me basé en otro al cual hago referencia, por lo que traté de mantener el código como de donde lo había sacado.

Ahora he realizado el mismo proyecto pero basándome en mi aprendizaje -después de leer algunos foros y tutoriales-  he mejorado la manera de hacerlo y sus capacidades con respecto al anterior, tratando de hacer el código más entendible y fácil de leer,para que pueda servir de punto de partida a quienes lo deseen.

Bueno ya me dio sueño, así que seré breve, lo he desarrollado en Netbeans 6.8 usando Java 1.6U20 y JMF 2.1.1e.

Coloco los enlaces:

  • Ejecutable de la Aplicación (No olviden que deben reemplazar el archivo jmf.properties por el suyo, que se encuentra en la carpeta de «lib» de su carpeta de instalación de JMF –> Aplicacion
  • Código Fuente del Proyecto en Netbeans 6.8 –> Codigo Fuente

Por ahora estoy estudiando eso de la detección de movimiento, veré si puedo poner algo de ello. por ahora buenas noches a todos.

Saludos.

62 comentarios sobre “JMF, Usando Camara desde Java y guardando imagen en Archivo o BD

  1. Hey! esta muy interesante eso de guardar imágenes, pero tengo una duda, digamos que tengo una secuencia de imágenes, y un vídeo es imágenes consecutivas, como puedo agarrar este array y así crear un video desde Java… el JMF me funcionaria para eso?¿¿?

    Saludos y éxitos.

      1. El detalle es que no quiero hacer toma de la cam sino de el escritorio mediante robot.createScreenCapture(); y de ello hacer un vídeo 😛 , se debe poder, si estamos sacando un frame con su codigo, pues debe haber una forma de pegar todos los frames y pues pasarlo a vídeo :P, Otra pregunta para poder correr el programa tengo que tener necesariamente jmf-2_1_1e-windows-i586.exe instalado¡??¡ y en linux de 64bits no funciona verdad (creo que lo lei en uno de tus post)

  2. yo tengo una duda y es que no se como crear y configurar un Processor, el Player solo me muestra el video pero si quiero guardar el video o transmitirlo con RTP, necesito un Processor, pero no se como crearlo y configurarlo. Si puedes colocar un ejemplo te lo agradeceria.

    1. Hola, la creacion es basicamente la misma, pero su logica varia un poco, debido a que presenta mas estados que un player. Mira voy a hacer algo mejor que colgar un ejemplo del player, voy a pasarte el material recopilado del que dispongo y con el cual me he basado para avanzar.
      Este es el enlace: aqui
      Espero ayudarte y pronto poner un ejemplo de Proccesor aunque como podras darte cuenta en el material que te adjunto que es parecido al Player.
      saludos.

      1. he probado casi de todo, en tus tutoriales creo un processor con un precessorModel, ya que es la forma mas facil, y todo sale bien pero al momento de agregar el componente visual del processor al panel dice que es null, y sale una exepcion. En mi proyecto uso un Processor por que quiero guardar un video con lo que se esta mostrando con la camara. Y tambien transmitirlo.

        Si me puedes ayudar, no se por que cuando agrego el componente visual del processor sale la exepcion diciendo que es null.

        1. Hola el problema que tienes es que el codigo se ejecuta muy rapido. En el momento en el que creas el Processor, inmediatamente intentas usar el Proccesor sin que este este listo, es por ello que te dice «null».
          Algunos recomiendan Hacer un Thread.sleep(XXXX) para dormir la aplicacion, otros hacen métodos synchronizados, y otros Usan Eventos.
          Mira este ejemplo, el código que está alli funciona sin problemas, aunque la persona que lo postea dice que algunas veces retorna null, esto confirma la espera, pues si te das cuenta existe un wait(2000), en ese vínculo esta la respuesta a lo que me preguntas.
          Saludos

          1. el ejemplo es claro, pero en ese ejemplo usan al processor como un player, con la sentencia p.setContentDescriptor(null); Y asi si funciona pero de ese modo no puede guardar el video que grabo con la camara, aqui te muestro el codigo.

            Format formatos[]=new Format[2]; formatos[0]=new AudioFormat(AudioFormat.IMA4); formatos[1]=new VideoFormat(VideoFormat.CINEPAK); FileTypeDescriptor tipo=new FileTypeDescriptor(FileTypeDescriptor.QUICKTIME); ProcessorModel modelo=new ProcessorModel(formatos,tipo);
            try { p=Manager.createRealizedProcessor(modelo);
            } catch (NoProcessorException e) { e.printStackTrace();
            } catch (CannotRealizeException e) { e.printStackTrace();
            } catch (IOException e) { e.printStackTrace();
            }
            DataSource entrada=p.getDataOutput(); MediaLocator destino=new MediaLocator(«file://»+file.getAbsolutePath());
            DataSink salida=null;
            try {
            salida=Manager.createDataSink(entrada, destino); salida.open();
            } catch (NoDataSinkException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace();
            } catch (IOException e) { e.printStackTrace();
            }
            try {
            salida.start();
            } catch (IOException e) { e.printStackTrace();
            }
            try { Thread.sleep(2000);
            } catch (InterruptedException e) { e.printStackTrace();
            }
            p.start(); panelPrincipal.add(p.getVisualComponent(),BorderLayout.CENTER); panelPrincipal.updateUI();
            }

            El error sale al momento de agregar el componente visual al panelPrincipal. La excepcion es nullPointerException.

            Si me puedes ayudar a encontrar el problema o si sabes otra forma de hacer un Processor te lo agradeceria.

            1. Hola creo que has llegado al mismo problema que llegué yo, te lo comento:
              Cuando quieres usar JMF a mi parecer solo puedes hacer una cosa al mismo tiempo: (Puedes Grabar) ó (mostrar) ó (Transmitir), yo esto lo he deducido a raíz de experiencias como la tuya (espero que esta deducción sea incorrecta) debido a que no he podido mezclar las tareas, y si te das cuenta por ejemplo JMFStudio, realiza Una Tarea a la Vez, y cuando transmite no muestra lo que transmite. Basándome en ello y en lo múltiples ejemplos donde se hace monotarea,

              1. cmop cordial saludo

                descargue tu ejecutable y no muestra la webcam
                en el post anterior lo use y funciona cuando lo ejecuto desde netbeans
                pero cuando trato de ejecutarlo desde el jar no puedo ver la cam
                en el otro post te deje un msj espero me puedas ayudar

            2. Hola el problema que me comentas es un problema con el que me he encontrado, te comento lo que pienso:
              Al parecer en JMF solo puedes hacer una tarea con el dispositivo, esto es, puedes: (Grabar) ó (Presentar) ó (Transmitir), pero no al mismo instante, esto es lo que se denomina Patron Singleton (espero que mi deducción sea errada), esta deducción la baso en que: JMFStudio cuando trasmites no puedes ver lo que transmites, además los ejemplos de Sun, siempre hacen una sola tarea.
              Pero la documentación de Sun «jmf2-0 Guide» no dice nada a respecto, por eso decidí buscar otras alternativas como LTI o FMJ, aunque esa es otra historia.
              Retomaré los intentos de hacer el guardado y mostrarlo en pantalla al mismo, y si lo logras antes que yo, agradecería que me lo hicieras saber.
              Saludos.

              1. hey cmop, ya cambiando de tema de jmf, tengo una pregunta para ti, estoy trabajando con sockets y en intranet me funciona perfectamente pero a la hora de colocar una ip de internet, o sea, de un pc que no es de mi red, no me sale, sale una excepcion, no se que pueda ser.

                Si me puedes ayudar te lo agradeceria.

                1. Hola seguramente tu configuración es la siguiente–> (TU PC) –> Router –> Internet <– Router <– (PC DESTINO), pues dejame decirte que hasta donde se, necesitas usar IP fijas e implementar NAT en las redes, o usar el conocido Modo Pasivo, el cual sirve para pasar por los router y demás.
                  Busca en internet acerca del modo pasivo para redes
                  saludos.

  3. Buenas Amigo probe esto y me fuciono , te felicito , ahora necesito hacer esto mismo pero en un sitio web , osea q el cliente se conecta a una pagina y desde esa pagina ve lo pasa en su camara , puedo contratar tus servicios? pues te quedo muy bien hecho esto

  4. Nesesito ayuda la verdad soy nuevo en esto y a lo mejor piensen que mi pregunta es tonta, pero baje el JMF en forma de .EXE lo instalale y me genero 3 aplicaciones , JMF customizer , JMStudio, y JMF registry; para empezar corro primero el registry y luego el studio y no me detecta mi camara, solo me detecta el sonido del microfono, mi laptop es VPCCW15FL sony Vaio.

    pero lo que realmente me preocupa es que al momento de abrir el NETBEANS donde estoy revisando una aplicacion me sale el siguiente error » PACKAGE JAVAX.MEDIA.CAPTUREDEVICEINFO DOEST NOT EXIST» estoy haciendo una aplicacion para capturar imagenes desde la web, tal y como esta la tuya jeje pero SE LOS SUPLICO AYUDENME A CORREGIR ESTO, E PENSADO QUE NO E REFERENCIADO LAS LIBRERIAS AL NETBEANS , PERO EL PROBLEMA ES QUE NO SE COMO HACERLO AYUDENME PORFAVOR DIGANME COMO AGREGAR LAS LIBRERIAS O EL API «JMF» A MI NETBEANS

    agradesco de verdad su ayuda

  5. jeje disculpen YA CORREGI MI PROBLEMA YA LE AGREGUE LA LIBRERIA Y SI CORRE BIEN AHORA ME SALE OTRO ERROR , NO ENCUENTRA MI CAMARA WEB ES LO UNICO 🙂 ESPERO SU AYUDA , POR CIERTO FELICIDADES ES EL MEJOR POST QUE HAY 🙂 RECOMENDARE MUCHO TU SITIO SALUDOS !!

    1. Hola , pues te comento que necesito hacer lo mismo q tu , la aplicacion de esta pagina funciona pero es una aplicacion de escirtorio, necesitamos esto mismo pero en un applet para q funcione via web , tienes un correo para acordar algo???

  6. hola: solo quiero darte las gracias por compartir el conocimiento que tienes en verdad es muy util, algo que resalto es que no te andas con rodeos para mostrar tu codigo que es realmente el ejemplo que la mayoria buscamos asi que muchas gracias lo modifica para un proyecto

  7. perdon queria decir que lo modificare para un proyecto que tengo en mente (pero no copiar y pegar)grax…. espero sigas con estos aportes tan productivos.

  8. Hola Amigo tu aporte esta muy bien FELICIDADES!!!!!
    oye podrias ayudarme a capturar video con java un .avi por ejemplo de antemano muchas gracias….
    y gracias por los aportes sirven de muchooo,, sigue asi!!!!

  9. Muuuuuuuuuuuuuuyyyyyyyyyyyy buena info!!!! Me sirvió muchísimo lo del primer post,ahora voy a ver ésta nueva versión mejorada para introducir cambios a la primera que ya la modifiqué bastante por mi lado. Te hago una consulta, ¿cómo haría para meterle gráficos al player? tipo números en cuenta regresiva hasta la captura y/o un pantallazo blanco simulando un flash al momento de realizar la captura.

    Muchas gracias ídolo..

  10. Hola…
    La verdad que excelente artículo.
    Tengo una duda con respecto a aplicar esto desde Camaras IP.
    NO entendí las respuestas por lo consulto cómo se puede aplicar esto a cámaras IP.
    Muchas gracias.

    Francisco

  11. Hola amigo, quisiera saber si sabrias como hacer para hacer esto mismo con scanner’s y si habria forma de ejecutar el software del scanner o el mismo software de captura de windows y que la aplicacion en java lo reciba.. tipo word cuando uno le dice agregar imagenes desde scanner o camara! Te agradeceria tu respuesta.. GRacias de AnteMano!

  12. Hoollaa!! muy interesnate tu aport, pero tengo un problema 😦 necesito que reconozca dos camara web que tengo conectadas, como son de la misma marca el solo está viendo una que hago?? gracias

  13. amigoo me sirvio mucho tu codigo excelnte te felicito`. peor tengo un super duda por favor ayudame a solucionarla,, mira instale todos los paquetes y pos en el jmf no me detecta mi camara web, y pos si no me la detecta este umm en tu aplicacion tampoco me detecta mi camara,q debo hacer porfavor ayudamee t lo agradezco!!

  14. Hola! Muy buen trabajo. Quería proponerte otro reto (visto que gustan). Podrías conseguirlo usando rtp para detectar una webcam remota?
    Seguro que a muchos nos serviría de ayuda como ya lo ha hecho este ejemplo.
    Muchas gracias!! Y a seguir así!

  15. hola César. tu aplicación me funcionó muy bien, mil gracias por ella. ahora lo q necesitaría es poder editar la imagen dentro de la aplicación (en tiempo de ejecusión). ello es para poder evitar el: 1) capturar la imagen, 2) grabarla en el disco duro, 3) abrirla con paint y, por ej, quedarme solo con la cara .. como si fuera un foto carnet. dime .. me puedes dar una mano con esto. lo que quiero es una referencia o el código para poder hacerlo. gracias… Jorge

  16. muy interesante el turtorial
    TEngo u problema ejecuto el programa y no aparece en los dipositivos las camaras a que se debe o que debo hacer para solucionar esto

  17. Tengo el mismo problema de Ag, cuando ejecuto la aplicación funciona perfectamente, pero cuando ejecuto el código fuente NO detecta los dispositivos, es decir, al darle clic sobre dispositivos no aparecen opciones.

    Muchas gracias y disculpa las molestias.

  18. Bueno jovenes para los que no les detecta los dispositivos ya encontre la solucion en el Disco C:\\ busque la carpeta JMF2.1.1e/lib y creen una carpeta en su escritorio copien todas las librerias para que no haya problema y se van al netbeans y click derecho sobre libreria en la opcion agregar carpeta o jar seleccionan la opcion y buscan en donde crearon su carpeta y guardaran las librerias entonces ya no deberia a ver ningun problema a detectara todos los dispositvos conectados a su maquina saludos cualquier duda trinisoft.blogspot.com

  19. Hola:

    Tengo una consulta. Cuando tengo dos dispositivos y hago el arranque me aparece una ventana que pregunta cuál es la cámara a inicializar. No hay forma de indicarle la cámara de alguna forma sin que aparezca esta pantalla?
    Gracias

  20. Hola Amigos .. aca tengo una duda .. veo la imagen en mi aplicacion y todo bien .. el problema es como ago para uardarlo .. trate de acer esto . pero solo llege hasta aqui !! …

    try{

    Image img=null;
    FrameGrabbingControl fgc = (FrameGrabbingControl)
    player.getControl(«javax.media.control.FrameGrabbingControl»);
    Buffer buf = fgc.grabFrame();
    // creamos la imagen awt
    BufferToImage btoi = new BufferToImage((VideoFormat)buf.getFormat());
    img = btoi.createImage(buf);

    if (img != null)
    {

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ImageIO.write((RenderedImage) img, «JPEG», out);
    InputStream in = new ByteArrayInputStream(out.toByteArray());

    // ——————————————————————————————————————————-
    // AQUI COMO AGO PARA CONVERTIR LA IMAGEN A BYTE :.. PARA GUARDARLO EN BD SQL
    // ——————————————————————————————————————————-

    }catch(Exception ex){}

  21. Hola, actualmente tengo un equipo dell XPS con un Windows Home Premium 64bits, y he intentado con varios programas, algunos me devuelven errores, el tuyo en especifico no me da ninguno, pero tampoco logro ver la camara, y si presiono el menu dispositivos, este se queda trabado y nunca pasa nada, he probado con la camara de la portatil, con una genius look 300 y con una logitech c160 la cual posee incompatibilidad con w7, pero no logro hacer que la camara se vea, alguna idea?

    1. Hola, el programa solo te mostrará los dispositivos que haya detectado JMF, como dije mas arriba si la camara es una camara USB (al parecerJMF no reconoce estas cámaras, recomiendo LTI-CIVIL), ahora si tu camara si ha sido detectada, debes copiar en el path de la aplicacion el archivo jmf.properties generado al momento de instalar el JMF, el se encuentra en (C: o D: o E: )\(CARPETA_INSTALACION)\lib.
      saludos

  22. Hola que tal!
    Estoy programando una aplicacion para transmision de voz usando RTP de JMF. Sin embargo, no puedo transmitir la voz en 2 ordenadores distintos. Podrian ayudarme?

    Les dejo los codigos, que implementandolos en la misma maquina, si funcionan:

    import java.io.IOException;
    import java.net.MalformedURLException;

    import javax.media.Manager;
    import javax.media.MediaLocator;
    import javax.media.NoPlayerException;
    import javax.media.Player;

    public class SimpleVoiceReciver{

    /**
    * @param args
    */
    public static void main(String[] args) {
    String url= «rtp://192.168.1.105:22224/audio/16»;

    MediaLocator mrl= new MediaLocator(url);

    if (mrl == null) {
    System.err.println(«Can’t build MRL for RTP»);
    System.exit(-1);
    }

    // Create a player for this rtp session
    Player player = null;
    try {
    player = Manager.createPlayer(mrl);
    } catch (NoPlayerException e) {
    System.err.println(«Error:» + e);
    System.exit(-1);
    } catch (MalformedURLException e) {
    System.err.println(«Error:» + e);
    System.exit(-1);
    } catch (IOException e) {
    System.err.println(«Error:» + e);
    System.exit(-1);
    }

    if (player != null) {
    System.out.println(«Player created.»);
    player.realize();
    // wait for realizing
    while (player.getState() != Player.Realized){
    try {
    Thread.sleep(10);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    player.start();
    } else {
    System.err.println(«Player doesn’t created.»);
    System.exit(-1);
    }
    }

    }

    Y he aqui el transmisor:

    // this class send sound
    import java.io.IOException;
    import java.util.Vector;

    import javax.media.CaptureDeviceInfo;
    import javax.media.CaptureDeviceManager;
    import javax.media.DataSink;
    import javax.media.Manager;
    import javax.media.MediaLocator;
    import javax.media.NoPlayerException;
    import javax.media.NoProcessorException;
    import javax.media.NotRealizedError;
    import javax.media.Player;
    import javax.media.Processor;
    import javax.media.control.FormatControl;
    import javax.media.control.TrackControl;
    import javax.media.format.AudioFormat;
    import javax.media.protocol.ContentDescriptor;
    import javax.media.protocol.DataSource;

    import java.net.InetAddress;
    import java.net.UnknownHostException;

    public class SimpleVoiceTransmiter {

    /**
    * @param args
    */
    public static void main(String[] args) {
    // First find a capture device that will capture linear audio
    // data at 8bit 8Khz
    AudioFormat format= new AudioFormat(AudioFormat.LINEAR,
    8000,
    8,
    1);

    Vector devices= CaptureDeviceManager.getDeviceList( format);

    CaptureDeviceInfo di= null;

    if (devices.size() > 0) {
    di = (CaptureDeviceInfo) devices.elementAt( 0);
    }
    else {
    // exit if we could not find the relevant capturedevice.
    System.exit(-1);
    }

    // Create a processor for this capturedevice & exit if we
    // cannot create it
    Processor processor = null;
    try {
    processor = Manager.createProcessor(di.getLocator());
    } catch (IOException e) {
    System.exit(-1);
    } catch (NoProcessorException e) {
    System.exit(-1);
    }

    // configure the processor
    processor.configure();

    while (processor.getState() != Processor.Configured){
    try {
    Thread.sleep(100);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    processor.setContentDescriptor(
    new ContentDescriptor( ContentDescriptor.RAW));

    TrackControl track[] = processor.getTrackControls();

    boolean encodingOk = false;

    // Go through the tracks and try to program one of them to
    // output gsm data.

    for (int i = 0; i < track.length; i++) {
    if (!encodingOk && track[i] instanceof FormatControl) {
    if (((FormatControl)track[i]).
    setFormat( new AudioFormat(AudioFormat.GSM_RTP,
    8000,
    8,
    1)) == null) {

    track[i].setEnabled(false);
    }
    else {
    encodingOk = true;
    }
    } else {
    // we could not set this track to gsm, so disable it
    track[i].setEnabled(false);
    }
    }

    // At this point, we have determined where we can send out
    // gsm data or not.
    // realize the processor
    if (encodingOk) {
    processor.realize();
    while (processor.getState() != Processor.Realized){
    try {
    Thread.sleep(100);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    // get the output datasource of the processor and exit
    // if we fail
    DataSource ds = null;

    try {
    ds = processor.getDataOutput();
    } catch (NotRealizedError e) {
    System.exit(-1);
    }

    // hand this datasource to manager for creating an RTP
    // datasink our RTP datasink will multicast the audio
    try {
    //String url= "rtp://192.168.1.105:22224/audio/16";

    String url="rtp://"+InetAddress.getLocalHost().getHostAddress()+":22224/audio/16";

    System.out.println("La direccion establecida es "+url);

    MediaLocator m = new MediaLocator(url);

    DataSink d = Manager.createDataSink(ds, m);
    d.open();
    d.start();
    processor.start();
    } catch (Exception e) {
    System.exit(-1);
    }

    }

    }

    }

  23. hola, buenas tardes, primero quiero agradecer por la ayuda ofrecida con este programa…estoy aprendiendo, y lo estoy implementado en otro programa mas complejo….y me funciona perfectamente en el netbeants, pero cuando tomo el ejecutable de la carpeta «dist» del proyecto entonces ya el programa ya no me encuentra la camara, que podra ser?

    1. debes copiar el archivo jmf.properties en el mismo lugar que esta el JAR de tu aplicacion, para mas detalles lee los comentarios de arriba, alli esta la solucion que acabo de decirte.
      saludos

  24. Oye, tengo un problema. Porque me dice que el Player no se ha iniciado cuando lo ejecuto desde el codigo fuente, que tengo que modificar o cambiar? Me podrias ayudar por favor. Gracias, este es mi correo: airtega@gmail.com

  25. Ayuda….! necesito que sirva en un applet y mi maximo logro ha sido que desde el appletviewer me diga «No permission to capture from applets.»

    -Ya lo he firmado
    -Chuleado en la aplicacion JMFRegistry
    -Modificado e applet.policy
    -Modificado el java.policy de la JRE

    XD La verdad no se que hacer o que deberia volver a intentar, solo he visto que una persona lo ha logrado y cobra $600 por la licencia de su software 😛

  26. Hola Amigos .. aca tengo una duda .. veo la imagen en mi aplicacion y todo bien .. el problema es como hago para guardar la imagen capturada por la webcam .. trate de acer esto . pero solo llege hasta aqui !! …

    try{

    Image img=null;
    FrameGrabbingControl fgc = (FrameGrabbingControl)
    player.getControl(“javax.media.control.FrameGrabbingControl”);
    Buffer buf = fgc.grabFrame();
    // creamos la imagen awt
    BufferToImage btoi = new BufferToImage((VideoFormat)buf.getFormat());
    img = btoi.createImage(buf);

    if (img != null)
    {

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ImageIO.write((RenderedImage) img, “JPEG”, out);
    InputStream in = new ByteArrayInputStream(out.toByteArray());

    // ——————————————————————————————————————————-
    // AQUI COMO AGO PARA CONVERTIR LA IMAGEN A BYTE :.. PARA GUARDARLO EN BD SQL
    // ——————————————————————————————————————————-

    }catch(Exception ex){}ç

  27. El programa es excelente. Cuando corro el ejecutable jar me reconoce la web cam. Pero cuando realizo yo la compilacion en mi netbeans el programa corre pero en los dispositivos no sale nada. Creo que puede ser algo de las libreria o del archivo jmf.properties estoy arrancando y no entiendo mucho. Agradeceria su ayuda

    1. jmf.properties debe quedar en la carpeta donde se generan los archivos .class. Casi todas las fallas son por ese problema y con eso se soluciona.

    1. jmf.properties debe quedar en la carpeta donde se generan los archivos .class en tu proyecto NetBeans. Verifica primero que tus dispositivos funcionen en Skype, MSN u otro programa.

  28. Cmop muchas gracias por este gran aporte. quisiera consultarte si esta misma librería sirve para implementar una tablet de las que capturan firmas digitales o toca mirar la librería jpen?
    Muchas gracias.

  29. Gracias amigo me has ayudado, pero tengo una pregunta, como puedo guardar imagenes con mas resolucion es decir un tamaño mas grande debido que la camara que uso es de 1080

Replica a Icaro101 Cancelar la respuesta