- 浏览: 1497835 次
- 性别:
- 来自: 大连
-
文章分类
- 全部博客 (460)
- java (148)
- javascript (34)
- Flex文章 (4)
- css+div (2)
- ajax (6)
- extjs (11)
- 人生感悟 (9)
- struts2.0 (6)
- IT之路,生活 (15)
- hibernate (6)
- struts1 (1)
- spring (5)
- j2ee错误 (3)
- Dwr (5)
- Linux (33)
- C++ (3)
- SWT Win32 (2)
- EJB (1)
- JPA (4)
- C语言和LinuxC (7)
- SQL (13)
- 项目经理 (6)
- db2 (2)
- java数据结构 (2)
- 网页播放器flv (1)
- 数据库 (24)
- 用户体验设计学习 (2)
- 网络电话 (5)
- 军事理论 (4)
- android (3)
- oracle (18)
- oracle ebs form (11)
- oracle ebs oaf (4)
- erp (20)
- DBA (9)
- java中URL 的编码和解码函数 (1)
- 铁血丹心 (1)
- excel 单元格格式不能立即生效 (1)
- Java调用bat文件 (1)
- 如何把本地outlook中的邮件上传到网络邮箱中 (1)
- java 报表 打印 (1)
- 创建dblink (1)
- 图标前台框架 (1)
- vnc (1)
- FORM (1)
- MYSQL (1)
最新评论
-
July01:
推荐用StratoIO打印控件,支持网页、URL、图片、PD、 ...
web打印不显示页眉页脚 -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
Javascript网页打印大全 -
hardyer:
大哥写的很实在,受教了,提前祝你元旦快乐!
黎活明给程序员的忠告 -
cxysilahi:
请问WIN7 64位,调用报错Exception in thr ...
JNative的初步使用 -
action1949:
好东西,解决问题
JFreeChart乱码解决方法
用于现场拍照,生成照片,主要用到Java Media Framework(JMF)。
首先到SUN下载最新的JMF,然后安装。http://java.sun.com/products/java-media/jmf/index.jsp
或者在我的附件里面找到JMF下载安装。
然后,说一下需求
1. 用摄像头拍照
2. 按下拍照按钮,获取摄像头内的图像
3. 保存为本地图像为jpg格式,不得压缩画质
4. 如果对当前照片不满意,可以重新拍摄。
相信也是大家最感兴趣的部分也就是如何让一个摄像头工作,并拍下一张照片了。
下面是一个已经实现了的示例。
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.event.*;
import java.awt.image.BufferedImage;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.File;
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 javax.swing.JScrollPane;
import javax.swing.JTextField;
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;
public class GetPhoto extends JPanel implements ActionListener{
private CaptureDeviceInfo captureDeviceInfo=null;
private MediaLocator mediaLocator=null;
private static Player player=null;
private ImagePanel imagePanel=null;
private JButton jbok,jbcancel;
private Buffer buffer=null;
private VideoFormat videoFormat=null;
private BufferToImage bufferToImage=null;
private Image image=null;
private JPanel jp=new JPanel();
public GetPhoto()
{
//setLayout(new BorderLayout());
this.setLayout(null);
setSize(300,500);
String str="vfw:Microsoft WDM Image Capture (Win32):0";
captureDeviceInfo=CaptureDeviceManager.getDevice(str);
mediaLocator=new MediaLocator("vfw://0");
imagePanel=new ImagePanel();
jbok=new JButton("拍 照");
jbcancel=new JButton("重 拍");
jbok.addActionListener(this);
jbcancel.addActionListener(this);
try {
player=Manager.createRealizedPlayer(mediaLocator);
player.start();
Component comp;
if((comp=player.getVisualComponent())!=null)
comp.setBounds(0, 0, 240, 180);
this.add(comp);
} catch (NoPlayerException e)
{
e.printStackTrace();
} catch (CannotRealizeException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
jp.add(jbok);
jp.add(jbcancel);
jp.add(imagePanel);
jp.setBounds(0, 180, 240, 200);
this.add(jp);
}
public void print(Graphics g)
{
super.print(g);
g.setColor(new Color(255,0,0));
g.drawLine(0, 0, 100, 100);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==jbok)
{
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,"temp.jpg");
}
if(e.getSource()==jbcancel)
{
imagePanel.setImage(null);
}
}
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)
{
e.printStackTrace();
}
JPEGImageEncoder je=JPEGCodec.createJPEGEncoder(fos);
JPEGEncodeParam jp=je.getDefaultJPEGEncodeParam(bi);
jp.setQuality(1f, false);
je.setJPEGEncodeParam(jp);
try {
je.encode(bi);
fos.close();
} catch (ImageFormatException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
}
public static File getImage()
{
File f=new File("temp.jpg");
return f;
}
class ImagePanel extends Panel
{
public Image myimg = null;
public ImagePanel()
{
setLayout(null);
setSize(240,180);
}
public void setImage(Image img)
{
this.myimg = img;
repaint();
}
public void paint(Graphics g)
{
if (myimg != null)
{
g.drawImage(myimg, 0, 0, this);
}
}
}
public static void main(String[] args)
{
JFrame f = new JFrame("FirstCapture");
GetPhoto cf = new GetPhoto();
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
player.close();
System.exit(0);}});
f.add("Center",cf);
f.pack();
f.setBounds(100,100,240,550);
f.setVisible(true);
}
}
安装的过程是个EXE文件我认为主要是要导入那个lib的包里面的jar文件。
附件里面也有JMF。
- jmf-2_1_1e-windows-i586.rar (4.9 MB)
- 下载次数: 23
发表评论
-
Oracle Developer10G 安装
2020-09-09 18:03 397oracle 客户端也要删除,以前的oracle产品 ... -
打开Eclipse时出现"The Eclipse executable launcher was unable to locate its companion
2018-06-05 15:06 9851打开Eclipse时出现"The Eclipse ... -
J2EE通过tomcat部署的两种方式
2017-09-12 09:01 740转载:http://blog.csdn.net/psp000 ... -
Linux安装Tomcat7
2016-03-30 15:01 912http://blog.sina.com.cn/s/blog ... -
java支持跨平台获取cpuid、主板id、硬盘id、mac地址 (兼容windows、Linux)(转)
2015-11-17 22:10 1684http://blog.csdn.net/flyingclo ... -
栋哥涕啐茆
2015-10-27 10:49 799栋哥涕啐茆 -
Eclipse快捷键 10个最有用的快捷键
2015-10-27 10:18 830Eclipse中10个最有用的快捷键组合 一个Eclip ... -
java上传头像图像剪切
2015-04-02 20:19 1220java上传头像图像剪切 JQUERY 图片上传裁切 -
创建dblink
2014-12-11 20:01 722CREATE public database link ... -
Bitnami Redmine 安装笔记
2014-12-10 11:28 1692http://atian25.iteye.com/blog/ ... -
利用workflow发送类似数据报表内容的通知页面
2014-11-21 15:03 856利用workflow发送类似数据报表内容的通知页面 ... -
excel科学技术法问题
2014-11-12 13:50 8861.使用导入外部数据的方法2.并且在第三步的时候选择文本,需要 ... -
java.lang.IllegalAccessError
2014-09-29 11:05 1247java.lang.IllegalAccessError: ... -
java如何获取文件编码格式
2014-04-11 11:28 102831:简单判断是UTF-8或不是UTF-8,因为一般除了UTF ... -
JAVA中使用FTPClient上传下载
2013-12-08 13:35 1963方法一:这种方法网上有许多 可以用下面的方式,但是支持批量 ... -
在Java中获取环境变量
2013-11-11 11:18 1484package cy.cn.test; import ... -
ORACLE性能调整笔记
2013-11-05 18:39 0一 关于statspack中等待事件的一些解释 ... -
EBS DBA指南笔记1
2013-11-05 18:35 1955时光飞逝,不从事EBS DBA转眼已有两年多。很还念那段学习 ... -
用html代码在word中插入分页符和页面设置
2013-11-05 17:11 5392<span lang=EN-US style=&quo ... -
OpenJWeb新增二维码图片生成功能
2013-11-05 09:02 1326在开发进销存软件的时 ...
相关推荐
6. **编程接口**:JMF提供了丰富的编程接口,允许开发者自定义处理多媒体数据的算法,实现更复杂的多媒体应用。 7. **跨平台性**:作为Java的一部分,JMF具有良好的跨平台兼容性,可以在运行Java的任何操作系统上...
Java多媒体框架JMF(Java Media Framework)是一个用于开发多媒体应用程序的平台,它允许Java开发者处理音频、视频和流媒体内容。JMF对于实现视频会议系统和其他多媒体应用是至关重要的。以下是对JMF中涉及的一些...
总的来说,JMF是Java多媒体开发领域的一个重要组成部分,虽然它有一些局限性,但在许多场景下仍然是一个实用的解决方案。如果你正在开发需要处理多媒体的Java应用,那么JMF的知识将为你打开一扇新的大门。
Java多媒体框架(Java Media Framework, 简称JMF)是Java平台上的一个核心API,用于处理音频、视频和其他时间同步的多媒体数据。它为开发者提供了丰富的功能,以支持多媒体内容的播放、捕获、处理和流式传输。在Java...
在"JMF安装包,java多媒体安装包"中,我们主要关注的是如何在Windows操作系统上安装和配置JMF。首先,你需要下载提供的文件“jmf-2_1_1e-windows-i586.exe”,这是一个专门为Windows设计的32位安装程序。在执行安装...
Java多媒体框架(Java Media Framework, 简称JMF)是Java平台上的一个核心API,主要用于处理音频、视频和其他时间同步的多媒体数据。这个API允许开发者识别、操作和播放多种格式的多媒体文件,为Java应用程序提供了...
"jmf2.1 JAVA多媒体"指的是JMF的2.1.1e版本,这是一个专为Windows i586架构设计的安装包。下面我们将深入探讨JMF及其在多媒体处理中的应用。 1. **JMF简介** JMF,全称为Java Media Framework,是由Sun ...
### JAVA多媒体开发手册 JMF API #### JMF概述与核心组件 Java多媒体框架(JMF)为Java平台引入了一系列强大的多媒体处理能力。JMF不仅支持常见的多媒体文件格式,如AU、AVI、MIDI、MPEG、QuickTime和WAV等,还...
ZZLG多媒体音乐播放器是一款基于Java编程语言,利用Java Media ...开发者在设计和实现这个播放器时,不仅考虑到了多媒体处理的基本需求,还关注到了用户交互和个性化体验,展示了Java在开发多媒体应用上的强大潜力。
Java Media Framework(JMF)是Java平台上的...通过深入理解JMF的原理和API,开发者可以创建出功能丰富的多媒体应用,满足各种需求。这份“JMF教程”将是你探索JMF世界的一把钥匙,帮助你快速上手并熟练掌握这个框架。
JMF 提供了一个统一的接口,使得开发者无需深入理解底层的多媒体编码和解码机制,就能实现多媒体应用,如音乐播放器。 在“java用的Jmf 开发音乐播放器”这个主题中,我们主要会涉及到以下几个关键知识点: 1. **...
这使得JMF成为了Java平台上进行多媒体应用开发的重要工具之一。 #### JMF的主要功能与组成部分 ##### 数据源(DataSource) 数据源(DataSource)是JMF中的核心组件之一,它代表了媒体数据的来源。DataSource可以...
JMF 是由Sun Microsystems开发的,主要用于构建和部署多媒体应用程序。它提供了一个服务框架,允许开发者处理各种媒体类型,如MPEG、AVI、JPEG等。JMF 支持动态加载不同的媒体插件,这些插件能够处理特定的媒体格式...
本资源文件是一份详尽的Java多媒体开发指南,旨在为开发者提供全面的Java环境下进行多媒体应用开发的指导。无论您是初涉Java多媒体开发的新手,还是已有丰富经验的老手,这份指南都能为您带来实用的帮助和深入的理解...
### Java中利用JMF编写摄像头拍照程序实例 #### 背景与介绍 在现代软件开发中,多媒体处理是一项非常重要的技术。Java Media Framework (JMF) 是Sun ...希望本文能帮助你在Java多媒体编程领域迈出坚实的一步。
JMF支持多种媒体格式,并允许开发者构建复杂的多媒体应用程序。JMF的关键特性包括: 1. **媒体播放**:可以播放各种音频和视频文件格式。 2. **媒体捕捉**:可以从硬件设备(如摄像头或麦克风)捕捉音频和视频数据...
通过JMF,开发者可以创建复杂的多媒体应用,如在线流媒体服务器、多媒体播放器和视频会议系统等。JMF支持多种编码格式和协议,包括MPEG、WAV、QuickTime、RealMedia等。 **核心组件** 1. **Service Provider ...
书中涉及到的MediaAPI包括Java2DAPI、Java3DAPI、JavaSoundAPI、JMFAPI等,它们都是Java语言体系专为编写Java多媒体应用程序而开发的应用程序接口。本书包括的内容有:Java多媒体技术概述,Java二维图形图像处理技术...
学习和掌握Java多媒体技术,特别是JMF,有助于开发者创建功能丰富的多媒体应用程序,满足用户对音视频播放、编辑、分享的需求。通过研究"java多媒体技术配套光盘代码"中的内容,开发者可以加深对JMF的理解,提升在...