网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  java中利用jmf编写摄像头拍照程序实例     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:83次  录入:管理员--2007-11-16  
 

首先到sun下载最新的jmf,然后安装。http://java.sun.com/products/java-media/jmf/index.jsp

然后,说一下需求

1. 用摄像头拍照

2. 在文本框输入文件名

3. 按下拍照按钮,获取摄像头内的图像

4. 在拍下的照片上有一红框截取固定大小的照片。

5. 保存为本地图像为jpg格式,不得压缩画质

技术关键,相信也是大家最感兴趣的部分也就是如何让一个摄像头工作,并拍下一张照片了。

利用jmf,代码很简单:

//利用这三个类分别获取摄像头驱动,和获取摄像头内的图像流,获取到的图像流是一个swing的component组件类

public static player player = null; 
  private capturedeviceinfo di = null; 
  private medialocator ml = null; 

  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); 
  } 
  } 
  catch (exception e) 
  { 
  e.printstacktrace(); 
  }

接下来就是点击拍照,获取摄像头内的当前图像。

代码也是很简单:

 private jbutton capture; 
  private buffer buf = null; 
  private buffertoimage btoi = null; 
  private imagepanel imgpanel = null; 
  private image img = null; 
  private imagepanel imgpanel = null; 

  jcomponent c = (jcomponent) e.getsource(); 
  if (c == capture)//如果按下的是拍照按钮 
  { 
  framegrabbingcontrol fgc =(framegrabbingcontrol)player.getcontrol
("javax.media.control.framegrabbingcontrol"); 
  buf = fgc.grabframe(); // 获取当前祯并存入buffer类 
  btoi = new buffertoimage((videoformat) buf.getformat()); 
  img = btoi.createimage(buf); // show the image 
  imgpanel.setimage(img); 
  }

保存图像的就不多说了,以下为示例代码

 bufferedimage bi = (bufferedimage) createimage(imgwidth, imgheight); 
  graphics2d g2 = bi.creategraphics(); 
  g2.drawimage(img, null, null); 
  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"); 
  }

已经申请将jwebcam建立为一个开源项目,放到gro,大家发挥自己的想象力加入自己的代码吧,比如拍摄视频,添加图像处理功能,等等。

 
 
上一篇: java ide:jbuilder和jdeveloper的比较    下一篇: java学习过程中应该理解的一些重点内容
  相关文档
jbuilder6:borland方式的java开发环境 11-16
实现rss 11-17
java模式研究袖珍版之flyweight模式 11-16
java语言中对hashmap的深度分析与比较 12-11
在s1as7中配置 informix的方法 11-17
j2ee 探险者:持久数据管理 11-17
j2ee 开发技术全接触 11-16
使用midp2.0开发游戏(4)改进的地图生成方式 11-17
用java实现几种常见的排序算法 11-16
如何避免在java中使用checked exception 11-16
如何避免microsoft非标准javasdk的潜在危险 11-17
内部类可以覆盖吗? 11-17
亲身体验corba: 使用java和c++混合编程 11-16
使用接口 11-17
javacc的安装 11-17
灵活使用ejb的本地和远程接口(三) 11-17
java十大经典中文图书 11-17
j2ee应用程序中sql语句的自动构造方法 11-16
java基本名词解释 11-17
jdbc 概述(七) 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息