用JMF拍照并在本地硬盘中保存遇到的问题

问题描述

原代码是这样:importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.MouseAdapter;importjava.awt.event.MouseEvent;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjava.awt.image.BufferedImage;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjavax.media.Buffer;importjavax.media.CannotRealizeException;importjavax.media.CaptureDeviceInfo;importjavax.media.CaptureDeviceManager;importjavax.media.Manager;importjavax.media.MediaLocator;importjavax.media.NoPlayerException;importjavax.media.Player;importjavax.media.control.FrameGrabbingControl;importjavax.media.format.VideoFormat;importjavax.media.util.BufferToImage;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JPanel;importcom.sun.image.codec.jpeg.ImageFormatException;importcom.sun.image.codec.jpeg.JPEGCodec;importcom.sun.image.codec.jpeg.JPEGEncodeParam;importcom.sun.image.codec.jpeg.JPEGImageEncoder;publicclassFirstCaptureextendsJPanelimplementsActionListener{privateCaptureDeviceInfocaptureDeviceInfo=null;privateMediaLocatormediaLocator=null;privatestaticPlayerplayer=null;privateImagePanelimagePanel=null;privateJButtoncapture;privateBufferbuffer=null;privateVideoFormatvideoFormat=null;privateBufferToImagebufferToImage=null;privateImageimage=null;publicFirstCapture(){setLayout(newBorderLayout());setSize(320,550);Stringstr="vfw:MicrosoftWDMImageCapture(Win32):0";captureDeviceInfo=CaptureDeviceManager.getDevice(str);//取系统所有可采集的硬件设备列表mediaLocator=newMediaLocator("vfw://0");imagePanel=newImagePanel();capture=newJButton("拍照");capture.addActionListener(this);try{player=Manager.createRealizedPlayer(mediaLocator);player.start();Componentcomp;Componentcomp1;if((comp=player.getVisualComponent())!=null)add(comp,BorderLayout.NORTH);}catch(NoPlayerExceptione){e.printStackTrace();}catch(CannotRealizeExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}add(imagePanel,BorderLayout.SOUTH);add(capture,BorderLayout.CENTER);}publicvoidprint(Graphicsg){super.print(g);g.setColor(newColor(255,0,0));g.drawLine(0,0,100,100);}publicstaticvoidmain(String[]args){JFramef=newJFrame("FirstCapture");FirstCapturecf=newFirstCapture();f.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){player.close();System.exit(0);}});f.add("Center",cf);f.pack();f.setSize(newDimension(320,550));f.setVisible(true);}publicvoidactionPerformed(ActionEvente)//获取摄像头内的当前图像{FrameGrabbingControlfgc=(FrameGrabbingControl)player.getControl("javax.media.control.FrameGrabbingControl");buffer=fgc.grabFrame();bufferToImage=newBufferToImage((VideoFormat)buffer.getFormat());image=bufferToImage.createImage(buffer);imagePanel.setImage(image);saveImage(image,"D:/mofang.jpg");}publicstaticvoidsaveImage(Imageimage,Stringpath){BufferedImagebi=newBufferedImage(image.getWidth(null),image.getHeight(null),BufferedImage.TYPE_INT_RGB);Graphics2Dg2=bi.createGraphics();g2.drawImage(image,null,null);FileOutputStreamfos=null;try{fos=newFileOutputStream(path);}catch(FileNotFoundExceptione){e.printStackTrace();}JPEGImageEncoderje=JPEGCodec.createJPEGEncoder(fos);JPEGEncodeParamjp=je.getDefaultJPEGEncodeParam(bi);jp.setQuality(0.5f,false);je.setJPEGEncodeParam(jp);try{je.encode(bi);fos.close();}catch(ImageFormatExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}}classImagePanelextendsPanel{publicImagemyimg=null;publicImagePanel(){setLayout(null);setSize(320,240);}publicvoidsetImage(Imageimg){this.myimg=img;repaint();}publicvoidpaint(Graphicsg){if(myimg!=null){g.drawImage(myimg,0,0,this);}}}}我要怎么样才能调用publicvoidactionPerformed(ActionEvente)函数,这个函数里面是否有拍照和保存图片功能?当程序运行时我要怎样才能实现拍照和保存?

解决方案

解决方案二:
记得资源库以前有置顶文章,楼主搜搜看了.

时间: 2024-09-06 15:29:20

用JMF拍照并在本地硬盘中保存遇到的问题的相关文章

互联网时代大家习惯将图片及文件上传到网络相册和网络硬盘中保存

与朋友一起分享生活中的喜悦,但其中的部分图片.文档是涉及到个人隐私或商业机密,仅限自己及少数人阅览,这时就需要给相册加上密码,以防止他人查看,密码虽然看似安全,但还是有很多的人的相册遭到破解公布于众,让很多人都倍感焦虑,对互联网失去了原有的安全感.如今已经步入到移动互联时代,随手的智能电话.书包里的平板电脑是否能给我们的资料带来安全的保障呢?如果当手机.平板电脑丢失时,里面珍贵的数据和照片一同无法找回该怎么办?酷盘的多重数据加密和多重备份功能能够完美解决以上问题,将数据移至酷盘中从此不会再担心丢

如何用Google搜索本地硬盘

Google能做些什么?许 多人看过这个问题 肯定会回答:作为一个强大的搜索引擎,当然是进行网络搜索的一把利器了.目前Google又将搜索的范围再度扩大,它除了能进行普通的网络搜索外,还推出了一个新型桌面搜索工具的初级版本,用户可以通过 一款名为"Google Desktop"的软件去搜索本地计算机硬盘中的信息,从而将桌面搜索同网络搜索集成在一起. 进入http://desktop.Google.com这个主页下载名为"Google Desktop"的软件,该程序的

将Mountain Lion文档的默认保存位置从iCloud 改为本地硬盘

 文档的默认保存位置从iCloud 改为本地硬盘-os x mountain lion"> 用 OS X Mountain Lion 的部分果迷或许会有一个比较头疼的问题--保存新建的文档,默认总是会保存到 iCloud,如果想要保存在本地硬盘上的话必须要多点击一次.不过,我们可以使用下面的终端命令,来让文档默认保存在本地硬盘: defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false 要想恢复默

url-web项目中长轮询本地窗口中的数据URL怎么写?

问题描述 web项目中长轮询本地窗口中的数据URL怎么写? 50C 如题目:web项目中用长轮询 当前桌面上开的 c/s窗口中扫入数据 web项目长轮询得到值 解决方案 不考虑低版本ie可以用websocket,和c/s的socket响应差不多,自己找你使用的语言的websocket服务器 如果你用的C#,可以看这个:C# websocket聊天室示例 解决方案二: 既然长轮询,那么得到数据后,直接把数据发送给web端 解决方案三: 长轮询的URL怎么写取决于你的服务器端程序的设计.它如何处理q

如何永久删除硬盘中的数据

根据纽约时报的一项基础隐私调查表明,人们在硬盘中数据的清除上存在着普遍的错误认识.绝大多数的人们并不知道仅仅删除文件是不够的,因为这样做并没有真正的将数据从计算机上清除干净.调查还发现,事实上仅有33%的二手硬盘将数据清除干净.在你想将硬盘丢弃或卖掉之前最好先确定硬盘是否还存有任何有关隐私的个人数据.如果你想通过格式化或数据粉碎软件彻底的清除数据,那么这篇文章可以给你提供帮助. 当你删除存储在计算机上的文件时,这些数据并没有真正移除,它们的信息被保存在操作系统可以查询到的目录中.当你删除文件时,

ghost安装系统本地硬盘显示invalid switch fmount怎么办

  本地安装系统非常方便正常所有的机子都能够正常支持,但是根据不同的系统情况和硬件情况难免会出现一些安装错误,本文介绍win7 64位旗舰版本地硬盘ghost安装系统提示invalid switch fmount快速解决方法! 其实出现这样的安装故障主要是引导失效引起的,也可能是磁盘分区的故障,或者是安装工具引导出现了问题引起的. 方法一:尝试更换本地硬盘的安装工具. 当然了,不同工具引导是有差异的,安装系统遇到invalid switch fmount错误的时候,更换硬盘安装器基本上都可以很好

js-从本地磁盘中读取图片

问题描述 从本地磁盘中读取图片 本地磁盘中指定的文件夹中存有很多图片,图片的名称是:x轴坐标加上下划线加上y轴坐标加上.png(x轴坐标_y轴坐标.png).如何解析图片名称,然后通过参数(x轴y轴)来判断那张图片比较符合参数的坐标.最后显示在jsp中. 请大神赐教~~~ 解决方案 读取磁盘图片文件并显示读取磁盘图片文件并显示 解决方案二: 首先找到图片的文件夹,遍历文件夹的每一张图片并且取出来名字,然后假设名字是a,取出来的就是字符串aString a = "34轴_45轴"; 然后

android下载本地服务器中的文件

问题描述 android下载本地服务器中的文件 android客户端上传文件到本地服务器,把文件的相对路径存到数据库中,要下载该文件时,下载文件的url是什么,服务器端和客户端该怎么写服务器端是用servlet写的 解决方案 首先在电脑上配置tomcat,webapps目录下新建mp3文件夹, 截图 首先我们通过SAX解析resources.xml 获取歌曲信息. 启动 Tomcat访问一下服务器地址http://210.**.**.**:8080/mp3/resources.xml 21...

android 文件读取-Android文件读取问题,读取不到电脑硬盘中的文件

问题描述 Android文件读取问题,读取不到电脑硬盘中的文件 我在Android项目中读取电脑D盘中的文件,D盘中文件存在,New File的时候文件找不到呢,我建了个java项目可以找到,是不是Android项目中不能读取电脑硬盘中的文件啊? 解决方案 楼主解决了吗.....我也遇到了这个问题 解决方案二: 好吧 楼主我解决了 Android 项目开发中 虽然存在D盘 但是虚拟机和真机Debug的时候 手机里都没有D盘呀 所以Java项目可以找到这个文件而项目无法读取D盘的文件