public Player player = null;
public Image image = null;
/** * 保存按钮 */
private JButton save = null;
//用于applet 调用js的类jdk自带的plugin包
private JSObject jso = null;
//初始化
public void init() {
save = new JButton(" 拍 照 ");
save.addActionListener(this);
CaptureDeviceManager.getDevice("vfw:Microsoft WDM Image Capture (Win32):0");
MediaLocator ml = new MediaLocator("vfw://0");
try {
player = Manager.createRealizedPlayer(ml);
player.start();
Component comp = null;
if ((comp = player.getVisualComponent()) != null) {
add(comp, BorderLayout.CENTER);
}
this.setSize(260, 300);
} catch (Exception e) {
e.printStackTrace();
}
}
//单击拍照事件
public void actionPerformed(ActionEvent e) {
FrameGrabbingControl fgc = (FrameGrabbingControl)
player.getControl("javax.media.control.FrameGrabbingControl");
Buffer buf = fgc.grabFrame();
BufferToImage btoi = new BufferToImage((VideoFormat) buf.getFormat());
Image img = btoi.createImage(buf);
img.getScaledInstance(240, 320, img.SCALE_DEFAULT);
BufferedImage bi = new BufferedImage(img.getWidth(null),
img.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = bi.createGraphics();
g2.drawImage(img, null, null);
//读取页面的url地址和文件名
String connUrl = getParameter("urladdress");
String fName = ""+System.currentTimeMillis();
String pWidth = getParameter("picwidth");
String pHeigh = getParameter("picheigh");
try {
URL url = new URL(connUrl + "?filename=" + fName + "&pwidth=" + pWidth
+ "&pheigh=" + pHeigh);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("POST");
conn.setDefaultUseCaches(false);
conn.setDoOutput(true);
conn.setUseCaches(true);
conn.setRequestProperty("Content-Type", "application/octet-stream");
OutputStream out = conn.getOutputStream();
//执行把图片导成二进制的函数
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
//获得默认的系统的二进制的图像的形式
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
//图片的质量
param.setQuality(1.0f, false);
//设置图片的编码器
encoder.setJPEGEncodeParam(param);
//把图片导进编码器里面,让机器编成二进制代码
encoder.encode(bi);
out.close();
//发送数据
conn.getContentType();
conn.getResponseCode();
} catch (Exception ep) {
ep.printStackTrace();
}
//调用js方法
JSObject window = JSObject.getWindow(this); // 获取JavaScript窗口句柄,引用当前文档窗口
// 调用JavaScript的myFunction(message)方法
window.call("myFunction", new Object[]{fName});//参数用数组的形势表示。
}
/**
* 关闭摄像头
*/
@Override
public void stop() {
player.close();
player.deallocate();
}
--
we drink green tea
