Java - No puedo guardar imagen .jpg de captura de camara

 
Vista:

No puedo guardar imagen .jpg de captura de camara

Publicado por Lucia (1 intervención) el 06/07/2007 19:57:42
Amigos les escribo ya que tengo un applet que captura imagenes desde una cámara web pero al momento de guardarla desde la pc cliente no logro hacerlo de ninguna manera, he tratado de hacer un boton guardar o hacerlo en la misma captura pero no logro guardar a disco, aqui va el código a ver si alguin me da una manito:

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.FrameGrabbingControl");
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);
}
}
}

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder