Foros del Web » Programación para mayores de 30 ;) » Java »

Captura de video y guardado de imágen

Estas en el tema de Captura de video y guardado de imágen en el foro de Java en Foros del Web. Amigos del foro: resulta que tengo un applet q realiza la captura de video y carga la imágen en jpg, pero al momento de guardar ...
  #1 (permalink)  
Antiguo 10/07/2007, 09:49
 
Fecha de Ingreso: noviembre-2006
Mensajes: 2
Antigüedad: 17 años, 5 meses
Puntos: 0
Captura de video y guardado de imágen

Amigos del foro: resulta que tengo un applet q realiza la captura de video y carga la imágen en jpg, pero al momento de guardar la imágen a disco no logro hacerlo de ninguna manera (he probado de varias formas) cuando compilo la clase y uso el applet desde otra pc muestra la imágen y la captura pero no la guarda, he ambiado el permiso de la clase donde supuestamente debería guardarse la imágen pero nada.... desde ya q quien pueda guiarme en este problema le doy las gracias.

ahh el codigo es el siguiente:
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import java.applet.*;

import javax.imageio.stream.*;

import javax.swing.*;
import javax.swing.event.*;
import javax.media.*;
import javax.media.control.*;
import javax.media.util.*;
import javax.media.cdm.CaptureDeviceManager;
import javax.media.format.*;
import javax.media.protocol.*;
import java.awt.Image;
import java.util.Vector;
import java.util.Iterator;
import javax.imageio.*;
import java.io.*;
import java.awt.image.RenderedImage;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.io.FileOutputStream;

import javax.media.Buffer;
import javax.media.CaptureDeviceInfo;
//import javax.media.CaptureDeviceManager;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.control.FrameGrabbingControl;
import javax.media.format.VideoFormat;
import javax.media.util.BufferToImage;
import javax.swing.JButton;
import javax.swing.JComponent;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.image.codec.jpeg.*;

public class SwingCapture extends Applet implements ActionListener
{
public static Player player = null;
public CaptureDeviceInfo di = null;
public MediaLocator ml = null;
public JButton capture = null;
// public JButton guardar = null;
public Buffer buf = null;
public Image img = null;
public VideoFormat vf = null;
public BufferToImage btoi = null;
public ImagePanel imgpanel = null;

public SwingCapture()
{
setLayout(new BorderLayout());
setSize(320,550);

imgpanel = new ImagePanel();
capture = new JButton("Captura");
// guardar = new JButton("Guardar");
capture.addActionListener(this);
// guardar.addActionListener (this);//agregué

String str1 = "vfw:Logitech USB Video Camera:0";
String str2 = "vfw:Microsoft WDM Image Capture (Win32):0";
di = CaptureDeviceManager.getDevice(str2);
ml = new MediaLocator("vfw://0");

try
{
player = Manager.createRealizedPlayer(ml);
player.start();
Component comp;

if ((comp = player.getVisualComponent()) != null)
{
add(comp,BorderLayout.NORTH);
}
add(capture,BorderLayout.CENTER);
// add (guardar, BorderLayout.WEST);//agregué
add(imgpanel,BorderLayout.SOUTH);
}
catch (Exception e)
{
e.printStackTrace();
}
}

/*
public static void main(String[] args)
{
Frame f = new Frame("SwingCapture");
SwingCapture cf = new SwingCapture();

f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
playerclose();
System.exit(0);}});

f.add("Center",cf);
f.pack();
f.setSize(new Dimension(320,550));
f.setVisible(true);
}
*/

public static void playerclose()
{
player.close();
player.deallocate();
}


public void actionPerformed(ActionEvent e)
{
JComponent c = (JComponent) e.getSource();

if (c == capture){

// Graba un frame
FrameGrabbingControl fgc = (FrameGrabbingControl)
player.getControl("javax.media.control.FrameGrabbi ngControl");
buf = fgc.grabFrame();

// Convierte este a una imágen

btoi = new BufferToImage((VideoFormat)buf.getFormat());
img = btoi.createImage(buf);

// show the image
imgpanel.setImage(img);

//////////////////// //guardar imagen

BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = bi.createGraphics(); //contexto gráfico
g2.drawImage(img, null, null);

g2.dispose();

String filename = "";
filename = "Pruebafoto.jpg";
FileOutputStream archivosalida = null;

try
{
archivosalida = new FileOutputStream(filename);
}
catch (java.io.FileNotFoundException io)
{
System.out.println("File Not Found");
}

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(archivosalida);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
param.setQuality(0.5f,false);
encoder.setJPEGEncodeParam(param);

try
{
encoder.encode(bi);
archivosalida.flush();
archivosalida.close();
}
catch (java.io.IOException io)
{
System.out.println("IOException");
}
/////////////////////////////////
}
}
/////////////////
class ImagePanel extends Panel
{
public Image myimg = null;

public ImagePanel()
{
setLayout(null);
setSize(320,240);
}
/////////////////////
public void setImage(Image img)
{
this.myimg = img;
repaint();
}
///////////////////
public void paint(Graphics g)
{
if (myimg != null)
{
g.drawImage(myimg, 0, 0, this);
}
}
}

}
  #2 (permalink)  
Antiguo 04/05/2011, 05:17
 
Fecha de Ingreso: septiembre-2008
Mensajes: 29
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Captura de video y guardado de imágen

Hola:

Siento no poder responderte a lo que dices, espero que dentro de un rato sepa algo y te pueda decir, pero ya que estas con el JMF una pregunta, solo puedes capturar una imagen desde la webcam, no puedes poner que capture la imagen desde un video en local?

gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:06.