`
g381672405
  • 浏览: 5005 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

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

阅读更多


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

我把程序分为两种,有趣的和无趣的,最近做了几个有趣的项目,其中一个,应当就算是摄像头拍照程序了。用
于现场拍照,生成照片,主要用到Java Media Framework(JMF)。
  
  首先到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中利用JMF编写摄像头拍照程序实例

    ### Java中利用JMF编写摄像头拍照程序实例 #### 背景与介绍 在现代软件开发中,多媒体处理是一项非常重要的技术。Java Media Framework (JMF) 是Sun Microsystems推出的一个强大的多媒体开发框架,它允许开发者在...

    Java中利用JMF编写摄像头拍照程序.rar_JMF 摄像头_java 摄像头_jmf_拍照_摄像头

    总的来说,Java中利用JMF编写摄像头拍照程序是一项涉及多媒体处理、设备控制和图像处理技术的任务。尽管JMF有一定的学习曲线,但它仍然是理解Java多媒体编程的一个重要切入点。开发者需要熟悉JMF的API,理解如何查找...

    2022年Java中利用JMF编写摄像头拍照程序Java教程.docx

    在本文档中,我们探讨了如何在Java中利用Java Media Framework (JMF) 来创建一个简单的摄像头拍照程序。JMF 是一个用于处理媒体(如音频和视频)的框架,它允许开发者集成多媒体功能到Java应用程序中。 首先,你...

    Java中利用JMF编写摄像头拍照程序[文].pdf

    以上就是使用JMF在Java中编写摄像头拍照程序的基本步骤。需要注意的是,JMF可能对硬件和驱动有一定的依赖性,因此在不同环境下可能需要进行适配。此外,由于JMF已有一些年头未更新,可能存在兼容性和性能问题。在...

    Java利用JMF编写摄像头拍照程序.doc

    总的来说,Java利用JMF编写摄像头拍照程序涉及到的主要知识点有:JMF框架的使用,摄像头设备的管理和访问,视频帧的捕获,图像数据的转换以及文件的保存操作。虽然JMF已经过时,但理解这些基本概念对于学习其他...

    jmf架构的调用摄像头拍照的源码。

    在标题和描述中提到的“jmf架构的调用摄像头拍照的源码”,是指利用JMF来访问和控制摄像头,实现拍照功能的代码示例。 JMF的工作原理是通过注册不同的Media Players来处理特定格式的媒体数据。这些Media Players...

    Java用JMF拍照

    在“Java用JMF拍照”的主题下,我们将深入探讨如何在Windows 7环境下安装JMF,以及如何使用Java通过JMF来捕获摄像头图像。 首先,让我们了解JMF的安装过程: 1. **下载JMF**: 需要从Oracle官方网站或者第三方可靠...

    java参照webcam-capture调用摄像头拍照

    Java调用摄像头拍照是计算机视觉应用中的一个常见需求,尤其在开发基于Web的应用时,例如视频会议、在线证件照拍摄等。本示例基于`webcam-capture`库,一个强大的Java库,允许开发者轻松地访问和控制电脑上的摄像头...

    摄像头拍照程序java

    在Java编程语言中,开发摄像头拍照程序涉及到许多关键知识点,包括使用Java Media Framework (JMF) 或者 JavaFX,以及处理图像数据。以下是对这些核心概念的详细解释: 1. **Java Media Framework (JMF)**:JMF是...

    基于java图片裁剪+调用摄像头并裁剪头上上传

    在Java编程环境中,实现“基于Java图片裁剪+调用摄像头并裁剪头上上传”的功能,需要结合多个技术点。这个项目可能包含了图像处理、设备交互以及网络上传等多个环节。以下将详细介绍这些关键知识点: 1. 图像处理:...

    abc20200415实现高清了_java_webcam_高清_快捷摄像头拍照_

    在本项目中,我们关注的是一个使用Java编写的高清Webcam拍照程序,它不依赖于JMF(Java Media Framework)并且已经针对高清拍摄进行了优化,适用于普通的USB摄像头。以下是对这个项目的详细分析和相关知识点的阐述:...

    java实现视频的录制和拍照功能Demo

    Java 实现视频录制和拍照功能是一项常见的需求,尤其是在开发多媒体应用程序或者移动应用时。Java Media Framework (JMF) 是一个用于处理音频、视频和多播数据的平台,它为Java开发者提供了一套全面的框架来播放、...

    海康摄像头识别拍照+水印功能Linux和win环境.zip

    在Java环境中,实现摄像头拍照功能可能需要用到Java Media Framework (JMF) 或 JavaFX,这两个库提供了访问和控制多媒体设备的能力,包括摄像头。开发者可以通过它们捕获摄像头的实时画面,并保存为图片文件(如...

    JFM_Photo.rar_jfm ja_拍照

    比较简单”,意味着这个程序利用了Java Media Framework(JMF)来构建一个简易的拍照应用。JMF是一个开源的API,它提供了播放、捕获、记录和控制媒体的能力。在这个特定的应用中,用户能够通过程序拍摄照片,并将...

    基于JavaMediaFramework的网络摄像头编程

    JavaMediaFramework(JMF)是Java平台上的一个多媒体编程框架,它为开发人员提供了一种在Java应用程序中处理音频和视频的能力。通过JMF,我们可以创建各种多媒体应用,包括网络摄像头编程,例如实现网络拍照功能。...

    MSM101_1_5_TakePictures

    7. **多媒体库**:如果涉及到从摄像头拍照,可能需要用到第三方库,如`JMF (Java Media Framework)`或`LWJGL (Lightweight Java Game Library)`,这些库可以提供访问摄像头和捕获视频流的能力。 8. **文件I/O操作**...

Global site tag (gtag.js) - Google Analytics