jmf摄像头applet
来源:互联网 发布:最近网络融资骗局 编辑:程序博客网 时间:2024/04/30 13:57
import javax.swing.*;
import java.io.*;
import javax.media.*;
import javax.media.format.*;
import javax.media.util.*;
import javax.media.control.*;
import java.applet.Applet;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import com.sun.image.codec.jpeg.*;
public class WebCang extends JApplet implements ActionListener
{
public static Player player = null;
private CaptureDeviceInfo di = null;
private MediaLocator ml = null;
/**
* 瞻钮
*/
private JButton capture = null;
/**
* 姘磁?
*/
private JButton save = null;
private JTextField num = null;
private Buffer buf = null;
private Image img = null;
//private VideoFormat vf = null;
private BufferToImage btoi = null;
private ImagePanel imgpanel = null;
/**
* 选取x,y,width,height默值
*/
private int rectX;
private int rectY;
private int rectWidth = 150;
private int rectHeight = 200;
private int imgWidth = 320;
private int imgHeight = 240;
/**
* 默媳募
*/
private String fname = "test";
public WebCang()
{
setLayout(new BorderLayout());
setSize(320, 550);
imgpanel = new ImagePanel();
imgpanel.addMouseMotionListener(imgpanel);
capture = new JButton("");
capture.addActionListener(this);
save = new JButton("");
save.addActionListener(this);
num = new JTextField();
String str1 = "vfw:Logitech USB Video Camera:0";
String str2 = "vfw:Microsoft WDM Image Capture (Win32):0";
di = CaptureDeviceManager.getDevice(str2);
ml = di.getLocator();
try
{
player = Manager.createRealizedPlayer(ml);
player.start();
Component comp;
if ((comp = player.getVisualComponent()) != null)
{
add(comp, BorderLayout.NORTH);
}
Panel panel1 = new Panel(new BorderLayout());
panel1.add(capture, BorderLayout.NORTH);
panel1.add(new Label("应募:"), BorderLayout.WEST);
panel1.add(num, BorderLayout.CENTER);
panel1.add(save, BorderLayout.SOUTH);
add(panel1, BorderLayout.CENTER);
add(imgpanel, BorderLayout.SOUTH);
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
JFrame f = new JFrame("--窕埃");
// Frame f = new Frame("殖粘 BCU WebCam Application");
WebCang cf = new WebCang();
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
playerclose();
System.exit(0);
}
});
f.add("Center", cf);
f.pack();
f.setSize(new Dimension(320, 590));
f.setVisible(true);
}
/**
* 乇头
*
*/
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
imgpanel.setImage(img); // save image
}
else if (c == save)
{
if (img != null)
{
fname = !num.getText().equals("") ? num.getText() : "test";
saveJPG(img, "Photo/" + fname + ".jpg");
}
}
}
/**
* 珊示片隙围选要取牟
*/
class ImagePanel extends Panel implements MouseMotionListener
{
private Image myimg = null;
public ImagePanel()
{
setLayout(null);
setSize(imgWidth, imgHeight);
}
public void setImage(Image img)
{
this.myimg = img;
repaint();
}
public void update(Graphics g)
{
g.clearRect(0, 0, getWidth(), getHeight());
if (myimg != null)
{
g.drawImage(myimg, 0, 0, this);
g.setColor(Color.RED);
g.drawRect(rectX, rectY, rectWidth, rectHeight);
}
}
public void paint(Graphics g)
{
update(g);
}
public void mouseDragged(MouseEvent e)
{
rectX = e.getX() - 50;
rectY = e.getY() - 50;
repaint();
}
public void mouseMoved(MouseEvent e)
{
}
}
/**
* 图
* @param img
* @param s
*/
public void saveJPG(Image img, String s)
{
BufferedImage bi = (BufferedImage) createImage(imgWidth, imgHeight);
/*BufferedImage bi =
new BufferedImage(
img.getWidth(null),
img.getHeight(null),
BufferedImage.TYPE_INT_RGB);*/
Graphics2D g2 = bi.createGraphics();
g2.clipRect(rectX, rectY, rectWidth, rectHeight);
g2.drawImage(img, null, null);
int moveX = rectX > 0 ? rectX : 0;
int moveY = rectY > 0 ? rectY : 0;
int cutWidth =
rectX + rectWidth > imgWidth
? rectWidth - ((rectX + rectWidth) - imgWidth)
: rectWidth;
int cutHeight =
rectY + rectHeight > imgHeight
? rectHeight - ((rectY + rectHeight) - imgHeight)
: rectHeight;
bi = bi.getSubimage(moveX, moveY, cutWidth, cutHeight);
FileOutputStream out = null;
try
{
out = new FileOutputStream(s);
}
catch (java.io.FileNotFoundException io)
{
System.out.println("File Not Found");
}
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
param.setQuality(1f, false);
encoder.setJPEGEncodeParam(param);
try
{
encoder.encode(bi);
out.close();
}
catch (java.io.IOException io)
{
System.out.println("IOException");
}
}
}
- jmf摄像头applet
- # JMF摄像头
- 简单讲解用JMF技术在网页中用Applet直接抓取摄像头的影像
- JMF开启摄像头
- 利用JMF进行摄像头拍照:)
- 利用JMF进行摄像头拍照:
- 利用JMF进行摄像头拍照
- [转]调用jmf打开摄像头
- JMF调用USB摄像头程序
- 简单使用JMF调用摄像头
- applet 摄像头实现
- 【Java】【JMF】在win7下面使用jmf测试摄像头 windows7 jmf 摄像头
- 利用JMF进行摄像头拍照(转抄)
- 利用JMF进行摄像头拍照(转载)
- JAVA操作摄像头拍照的例子-JMF
- 用JMF写摄像头拍照程序(转)
- JMF 摄像头 视频捕捉拍照 源代码
- jmf实现调用笔记本摄像头并拍照
- 二叉树的C++源码
- windows XP 的命令大全(转载)
- 牛仔裤不会一直等你
- 《pro Spring》学习笔记之Quartz的cronTrigger使用
- 上传图片时,使用GDI+中重绘方式将CMYK图片转为RGB图片
- jmf摄像头applet
- 什么是交叉编译-嵌入式基础系列(网络查找)
- windows变量前缀总结(原创)
- How the 80/20 rule can help you be more effective.
- arm-linux-gcc和arm-elf-gcc的区别-嵌入式基础系列(网络查找)
- Facing Business Challenges at Holiday Inn Worldwide
- SNDCP学习笔记一(概述)
- FACING BUSINESS CHALLENGES AT AJ WRAPS
- 20 George Carlin - Things to think about