`
songhaikang
  • 浏览: 33253 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用Java调用摄像头进行拍照源码

阅读更多
使用Java调用摄像头进行拍照源码,并且有JMF下载地址。
JMF安装文件下载地址:
http://www.blackswansoft.com/songhaikang/files/myfile/Java Media Framework (JMF) API播放.rar

JMF驱动包下载地址:
http://www.blackswansoft.com/songhaikang/files/myfile/jmf.jar

更多优秀的Java案例,请到http://www.blackswansoft.com/去参考。

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.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;
//import com.sun.media.protocol.vfw.DataSource;
import com.sun.media.protocol.rtsp.DataSource;


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;
  
    public FirstCapture()
    {
  
  
        setLayout(new BorderLayout());
        setSize(320,550);

        captureDeviceInfo=CaptureDeviceManager.getDevice("vfw:Microsoft WDM Image Capture (Win32):0"); //这里放置的是视频驱动
  
        mediaLocator=new MediaLocator("vfw://0"); //这里是视频地址
        imagePanel=new ImagePanel();
        capture=new JButton("拍照");
        capture.addActionListener(this);
        DataSource ds = new DataSource();
        ds.setLocator(mediaLocator);
        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);
    }

    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);
          }
          
        }
      }
    

}


推荐软件

用java开发的一款功能强大的开源的远程控制软件,最近又升级了,添加了许多使用的功能,而且代码也有了很大程度的优化。可以实现生成服务器、修改上线主机名称、屏幕监视,屏幕控制、主动连接、上传文件、下载文件、 远程命令、远程任务管理器、发送警告、相互聊天、换皮肤、版本升级提醒等功能,通过该软件可以实现用一台电脑同时控制多台电脑,也可以多台电脑控制同一台电脑等。
软件官方网站下载地址:http://dl.iteye.com/topics/download/c1b7acd2-c7ad-3753-8929-48424025d711

软件如下图所示:



1
0
分享到:
评论

相关推荐

    摄像头拍照并使用java进行照片保存

    使用Java调用摄像头进行拍照源码。 JMF安装文件下载地址: http://www.blackswansoft.com/songhaikang/files/myfile/Java Media Framework (JMF) API播放.rar

    java Swing 中调用摄像头拍照源码(有说明)

    以下是对标题“java Swing 中调用摄像头拍照源码(有说明)”和描述的详细解释,以及相关知识点的深入探讨。 1. **Swing简介**: Swing是Java的GUI库,它基于Java Foundation Classes (JFC),提供了一套轻量级的...

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

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

    java调用摄像头推流(针对安卓系统的英特尔处理器)

    本示例“java调用摄像头推流(针对安卓系统的英特尔处理器)”旨在教你如何在搭载英特尔处理器的Android设备上,利用Java编程语言调用摄像头并进行实时流媒体推送。以下是关于这个主题的详细知识讲解。 首先,我们...

    java摄像头拍照源码

    Java摄像头拍照源码是针对Java ME(J2ME)平台设计的一种功能,允许开发者在移动设备上集成摄像头功能,实现拍照并保存图片的应用。J2ME是Java的一个子集,主要用于嵌入式设备和移动设备,如手机和PDA。在Java ME中...

    java调用摄像头printScreen4web源码借鉴.pdf

    标题中的"java调用摄像头printScreen4web源码借鉴.pdf"指的是一个Java项目,该项目旨在实现Web应用程序调用用户电脑的摄像头进行图像捕获、截图,并将这些图像上传到服务器的功能。描述中提到,开发者已经成功实现了...

    delphi10.2android调用摄像头

    在使用Delphi 10.2进行Android应用开发时,调用和控制摄像头是一项常见的功能需求。本示例将深入探讨如何实现这一功能,并提供一些关键知识点和注意事项。 首先,要调用Android设备的摄像头,我们需要使用Android ...

    asp.net网页调用本地摄像头源码

    在这个"asp.net网页调用本地摄像头源码"的项目中,开发者提供了一种方法让ASP.NET网页能够调用用户计算机上的摄像头。 首先,`index.html`是网页的主入口文件,可能包含了HTML代码以及JavaScript脚本,用于初始化...

    java实现调用摄像头拍照.zip

    javaWeb调用摄像头拍照,有两种解决方案:一种是使用ActiveX控件调用摄像头实现拍照上传功能,这种方式只能在ie浏览器下有效,限制非常大;另一种是调用flash实现拍照功能,源码主要介绍下如果通过调用flash插件实现...

    asp.net使用摄像头拍照源码

    在这个"asp.net使用摄像头拍照源码"项目中,开发者提供了一种方法,使得在Web应用程序中可以利用用户的电脑摄像头进行拍照并处理相关图像。下面将详细阐述相关知识点。 1. **ASP.NET 控件开发**: ASP.NET 提供了...

    flash网页调用摄像头制作头像

    jsp+servlet实现,包括后台保存为图片代码。 两种模式: 1:直接修改网上图片 ...2:接用本地摄像头,拍照后处理上传。 整个工程,源码一起上传,下载eclipse导入后直接可以测试。 flash为:AvatarEditor.swf

    android调用摄像头实时预览

    在Android平台上,调用摄像头进行实时预览是开发过程中常见的需求,特别是在开发摄影、视频聊天或者AR应用时。本文将详细讲解如何在320*320像素、mdpi屏幕分辨率下设置摄像头预览。 首先,理解Android的屏幕密度...

    spring boot+mybatis 项目 调用网络摄像头,进行录像(以华为摄像头为例子,可以使用多种网络摄像头)

    在本项目中,我们主要探讨如何使用Spring Boot和MyBatis框架来调用网络摄像头进行录像,以华为摄像头为例,并且实现将录制的视频通过SFTP协议上传到远程服务器进行存储。以下是对该项目涉及的技术点的详细说明: 1....

    jsp调用摄像头拍照,控制摄像头操作

    <title>JSP调用摄像头拍照 navigator.mediaDevices.getUserMedia({video: true, audio: false}) .then(function(stream) { var video = document.querySelector('video'); video.srcObject = stream; video....

    android 调用系统摄像头和SurfaceView摄像头拍照

    总结来说,Android中的摄像头操作涉及Intent的使用来调用系统相机,以及SurfaceView和Camera类的结合来实现自定义相机功能。了解这些知识点对于开发涉及相机的应用至关重要,特别是对于希望深入学习Android多媒体...

    Java-Swing界面的摄像头\\高拍仪抓图功能,有预览视频-使用xuggle。

    本教程将深入探讨如何利用Xuggler库来实现在Java Swing界面上进行摄像头预览和抓图。 首先,Xuggler是一个开源的Java库,主要用于处理音视频数据,包括编码、解码、转换以及流媒体处理等。在Java中,Xuggler能够...

    opencv调用海康威视摄像头源代码(内附海康威视错误代码大全)

    在本文中,我们将深入探讨如何使用OpenCV库调用海康威视的网络摄像头,并解决可能出现的错误。OpenCV是一个强大的计算机视觉库,被广泛应用于图像处理和机器学习任务。而海康威视是知名的安防监控设备制造商,其网络...

    安卓浏览器WebViewJSHTML5相关-HTML5JS调用手机摄像头拍照.rar

    【Android浏览器WebView与JS交互及HTML5调用摄像头拍照】\n\n在移动开发中,Android的WebView组件常被用于加载HTML5页面,实现类似原生应用的功能。WebView是Android系统提供的一种内置浏览器控件,它能够加载和显示...

    Android外置USB摄像头AndroidUVCCamera-master.zip

    在移动设备上,我们常常依赖内置摄像头进行拍照、录像等操作。然而,随着技术的发展,用户对于更高级别、功能更丰富的摄像头需求日益增长,这催生了Android外置USB摄像头的应用。本文将深入探讨如何在Android平台上...

    jsp flash 摄像头源码下载

    【标题】"jsp flash 摄像头源码下载"涉及的是在Web开发中使用Java Server Pages (JSP) 和Adobe Flash技术实现摄像头功能的源代码。这一组合允许开发者在网页上集成摄像头交互,比如拍照、录像等。 【描述】"jsp+...

Global site tag (gtag.js) - Google Analytics