Boa tarde.
Tenho esse seguinte applet:
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.media.Buffer;
import javax.media.CaptureDeviceInfo;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.cdm.CaptureDeviceManager;
import javax.media.control.FrameGrabbingControl;
import javax.media.format.VideoFormat;
import javax.media.util.BufferToImage;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import TO.VisitanteTO;
public class WebCamVisitante extends Applet implements ActionListener {
private static final long serialVersionUID = 1L;
public static Player player = null;
public CaptureDeviceInfo di = null; // @jve:decl-index=0:
public MediaLocator ml = null; // @jve:decl-index=0:
public JButton capture = null;
public Buffer buf = null;
public Image img = null;
public VideoFormat vf = null;
public BufferToImage btoi = null;
/*
public void init() {
this.setLayout(new BorderLayout());
this.setSize(320, 280);
this.setVisible(true);
paint();
}
*/
public void paint(Graphics g) {
this.setLayout(new BorderLayout());
this.setSize(320, 280);
this.setVisible(true);
capture = new JButton("Gravar");
capture.addActionListener(this);
// This may differ check the jmf registry for
// correct entry
String str2 = "vfw//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);
} catch (Exception e) {
e.printStackTrace();
}
g.drawString("Welcome in Java Applet.",40,20);
}
public static void playerclose() {
player.close();
player.deallocate();
}
public void actionPerformed(ActionEvent e) {
JComponent c = (JComponent) e.getSource();
if (c == capture) {
// Grab a frame
FrameGrabbingControl fgc = (FrameGrabbingControl) player
.getControl("javax.media.control.FrameGrabbingControl");
buf = fgc.grabFrame();
// Convert it to an image
btoi = new BufferToImage((VideoFormat) buf.getFormat());
img = btoi.createImage(buf);
// show the image
}
}
public Image getImagem(){
return img;
/*
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
int resultado = fileChooser.showSaveDialog(this);
String caminho = ""+fileChooser.getSelectedFile();
caminho += ".jpg";
JOptionPane.showMessageDialog(null,caminho);
try {
ImageIO.write((RenderedImage) imagem, "PNG", new File(caminho));
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "não foi possivel encontrar " +
"o dispositivo para a captura da imagem.");
e.printStackTrace();
}
*/
}
}
E a seguinte JSP:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="java.applet.Applet"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Capturar Imagem</title>
</head>
<script type="text/javascript">
function defineValor(vlr){
obj = document.getElementById("Operacao");
obj.value = vlr;
Camera.submit();
}
</script>
<body>
<form id="Camera" name ="Camera" action="VisitanteControle" method="post">
<input type="hidden" id="Operacao" name="Operacao">
<APPLET ALIGN="CENTER" CODE="WebCamVisitante" WIDTH="800" HEIGHT="500">
</APPLET>
</form>
</body>
</html>
O arquivo WebCamVisitante.class está na mesma pasta da JSP.
Quando eu rodo o APPLET sozinho, ele inicia a Camera e mostra a imagem.
Quando eu chamo pela JSP, a única coisa que aparece é o " g.drawString(“Welcome in Java Applet.”,40,20);" do método “paint”.
Pergunta: porque quando eu rodo a Applet sozinha, ele incia o JMF e exibe a imagem e pq quando rodo ela pela JSP, ele passa por todos os comandos e exibe apenas Welcome in Java Applet."?