`
linsl
  • 浏览: 70703 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

jmf简单例子

    博客分类:
  • java
阅读更多
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Panel;
import java.awt.Rectangle;
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.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.media.Buffer;
import javax.media.CannotRealizeException;
import javax.media.CaptureDeviceInfo;
import javax.media.CaptureDeviceManager;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.NoPlayerException;
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.JFrame;
import javax.swing.JPanel;

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

/**
 * @author 
 * @version 创建时间:Apr 28, 2008 8:02:26 PM
 * 类说明:
 */
public class FirstCapture extends JPanel implements ActionListener{

	private CaptureDeviceInfo captureDeviceInfo=null;
	private MediaLocator mediaLocator=null;
	private static Player player=null;
	private ImagePanel imagePanel=null;
	private JButton capture;
	private Buffer buffer=null;
	private VideoFormat videoFormat=null;
	private BufferToImage bufferToImage=null;
	private Image image=null;
	/**
	 * @param args
	 */
	public FirstCapture()
	{
		 setLayout(new BorderLayout());
		 setSize(320,550);
		String str="vfw:Microsoft WDM Image Capture (Win32):0";
		captureDeviceInfo=CaptureDeviceManager.getDevice(str);
		mediaLocator=new MediaLocator("vfw://0");
		imagePanel=new ImagePanel();
		 capture=new JButton("拍照");
		 capture.addActionListener(this);
		try {
			player=Manager.createRealizedPlayer(mediaLocator);
			player.start();
			Component comp;
			Component comp1;
			if((comp=player.getVisualComponent())!=null)
				add(comp,BorderLayout.NORTH);
//			if((comp1=player.getControlPanelComponent())!=null)
//				add(comp1,BorderLayout.CENTER);
		} catch (NoPlayerException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (CannotRealizeException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		add(imagePanel,BorderLayout.SOUTH);
		add(capture,BorderLayout.CENTER);
	}
	
	@Override
	public void print(Graphics g) {
		// TODO Auto-generated method stub
		super.print(g);
		g.setColor(new Color(255,0,0));
	      g.drawLine(0, 0, 100, 100);
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		JFrame f = new JFrame("FirstCapture");
		FirstCapture cf = new FirstCapture();
	    
	    f.addWindowListener(new WindowAdapter() {
	      public void windowClosing(WindowEvent e) {
	      player.close();
	      System.exit(0);}});
	    
	    f.add("Center",cf);
	    f.pack();
	    f.setSize(new Dimension(320,550));
	    f.setVisible(true);
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		FrameGrabbingControl fgc=(FrameGrabbingControl)player.getControl("javax.media.control.FrameGrabbingControl");
		buffer=fgc.grabFrame();
		bufferToImage=new BufferToImage((VideoFormat)buffer.getFormat());
		image=bufferToImage.createImage(buffer);
		imagePanel.setImage(image);
		saveImage(image,"D:/test.jpg");
	}
	public static void saveImage(Image image,String path)
	{
		BufferedImage bi=new BufferedImage(image.getWidth(null),image.getHeight(null),BufferedImage.TYPE_INT_RGB);
		Graphics2D g2 = bi.createGraphics();
		g2.drawImage(image, null, null);
		FileOutputStream fos=null;
		try {
				fos=new FileOutputStream(path);
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		JPEGImageEncoder je=JPEGCodec.createJPEGEncoder(fos);
		JPEGEncodeParam jp=je.getDefaultJPEGEncodeParam(bi);
		jp.setQuality(0.5f, false);
		je.setJPEGEncodeParam(jp);
		try {
			je.encode(bi);
			fos.close();
		} catch (ImageFormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	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);
	      }
	      
	    }
	  }
	
}
 

 

分享到:
评论
1 楼 allenlinrui 2008-08-07  
很不错~我参考参考

相关推荐

    JMF播放MP3简单例子,JMF免安装

    JMF播放MP3简单例子,Eclipse项目,免安装JMF,但是要将JMF安装时产生的20个dll文件拷贝在jre\bin下面才能正常运行。 关于20个dll的详情,可以下载我的JMF版音乐播放器,里面有文档说明: ...

    JMF教程详解及简单例子分析

    内容表格1. 关于此指南2. 一个简单的音频播放器3. JMF用户接口组件4. JMF概念5. 传播和接收媒体6. 总结以及资源

    JMF2.1 下载 最新版本*(只有安装包)

    JMF2.1 Java媒体框架(JMF)使你能够...它是一个相当复杂的系统,完全了解这个系统可能需要花上几周的时间,但是这篇文章将主要介绍JMF的几个核心接口和类,然后通过一个简单的例子向你展示如何利用该接口进行编程。

    JMF_demo.rar

    JMF_demo.rar 包含简单实例,安装程序,jar包,使用说明等等。。。

    JMF.rar_java JMF

    Java媒体框架(JMF)使你能够编写...它是一个相当复杂的系统,完全了解这个系统可能需要花上几周的时间,但是这篇文章将主要介绍JMF的几个核心接口和类,然后通过一个简单的例子向你展示如何利用该接口进行编程。&nbsp

    利用JMF进行多媒体编程

    Java多媒体框架(JMF)中包含了许多用于...它是一个相当复杂的系统,完全了解这个系统可能需要花上几周的时间,但是这篇文章将主要介绍JMF的几个核心接口和类,然后通过一个简单的例子向你展示如何利用该接口进行编程。

    jmf基础教程

    java+jmf,从配置到简单使用的教程,有几个小例子来帮助入门。

    JAVA多媒体开发手册 JMF API

    它是一个相当复杂的系统,完全了解这个系统可能需要花上几周的时间,但是这篇文章将主要介绍JMF的几个核心接口和类,然后通过一个简单的例子向你展示如何利用该接口进行编程。 JMF目前的最新版本是2.1,Sun通过它向...

    JMF.zip_JMF W_Java 播放器_hookqq_jmf_jmf-2_0-spec

    java开发的媒体播放器,简单实用的例子,方便初学者学习

    Java中利用JMF编写摄像头拍照程序实例

    网上找的。可以调试通过, 非常简单 好用。

    一个简单视频采集例子

    一个简单的jmf 视频采集例子,很适合初学者研读.

    Java简单实用的播放器应用实例源码(luocheng_imti).rar

    FinePlayer 是由Java语言用JMF类编写的应用程序。 本人的英文名是Finecheng 所以将这个程序命名为FinePlayer 。 运行此程序是要安装JMF包,导入如下五个包 mediaplayer.jar multiplayer.jar sound.jar sound.jar ...

    基于java的音乐播放器课程设计报告(1).doc

    就拿我们的家用摄像机系统作个例子。首先用摄像机拍摄内容 ,拍摄下来的内容录制在DV带中。DV带可以放在放像机里播放、放像机提供视频信号给 电视机,提供音频信号给音箱,这样我们就可以在电视机上看到画面,从音箱...

    基于java的音乐播放器课程设计报告.doc

    就拿我们的家用摄像机系统作个例子。首先用摄像机拍摄内容 ,拍摄下来的内容录制在DV带中。DV带可以放在放像机里播放、放像机提供视频信号给 电视机,提供音频信号给音箱,这样我们就可以在电视机上看到画面,从音箱...

    Java开发技术大全 电子版

    10.2一个关于泛型的简单例子305 10.3带两个类型参数的泛型类308 10.4有界类型309 10.5通配符参数311 10.6泛型方法313 10.7泛型接口315 10.8泛型类的继承317 10.8.1以泛型类为父类317 10.8.2以非泛型类为父类...

    Java2实用教程.rar

    16 4Java媒体框架 JMF 习题 第17章JavaSwing基础 17 1几个重要的类 17 2中间容器 17 3各种组件 习题">Java2实用教程 rar 第1章Java入门 1 1Java的诞生 1 2Java的特点 1 3安装Sun公司的SDK 1 4一个Java程序的开发...

    JAVA基础课程讲义

    序列化/反序列化的步骤和实例 162 综合的序列化和反序列化练习 163 JAVA.IO包相关流对象用法总结(尚学堂1002班王鑫) 165 IO中其他常用类 165 File类 165 RandomAccessFile 166 思考作业 166 上机作业 166 提高课外...

Global site tag (gtag.js) - Google Analytics