JAVA网页编程之Java中使用JMF编写摄像头摄影程序
你说是sun公司对她研究的透还是微软?针对自己工具开发的.net性能上肯定会站上风的。程序起首到SUN下载最新的JMF,然后安装。http://java.sun.com/products/java-media/jmf/index.jsp然后,说一下需求
1.用摄像头摄影
2.在文本框输出文件名
3.按下摄影按钮,猎取摄像头内的图象
4.在拍下的照片上有一红框截取流动巨细的照片。
5.保留为当地图象为jpg格局,不得紧缩画质
手艺关头,信任也是人人最感乐趣的部分也就是怎样让一个摄像头事情,并拍下一张照片了。
使用JMF,代码很复杂:
//使用这三个类分离猎取摄像头驱动,和猎取摄像头内的图象流,猎取到的图象流是一个Swing的Component组件类
publicstaticPlayerplayer=null;
privateCaptureDeviceInfodi=null;
privateMediaLocatorml=null;
//文档中供应的驱动写法,为什么这么写我也不知:)
Stringstr1="vfw:LogitechUSBVideoCamera:0";
Stringstr2="vfw:MicrosoftWDMImageCapture(Win32):0";
di=CaptureDeviceManager.getDevice(str2);
ml=di.getLocator();
try
{
player=Manager.createRealizedPlayer(ml);
player.start();
Componentcomp;
if((comp=player.getVisualComponent())!=null)
{
add(comp,BorderLayout.NORTH);
}
}
catch(Exceptione)
{
e.printStackTrace();
}
接上去就是点击摄影,猎取摄像头内确当前图象。
代码也是很复杂:
privateJButtoncapture;
privateBufferbuf=null;
privateBufferToImagebtoi=null;
privateImagePanelimgpanel=null;
privateImageimg=null;
privateImagePanelimgpanel=null;
JComponentc=(JComponent)e.getSource();
if(c==capture)//假如按下的是摄影按钮
{
FrameGrabbingControlfgc=(FrameGrabbingControl) player.getControl("javax.media.control.FrameGrabbingControl");
buf=fgc.grabFrame();//猎取以后祯并存进Buffer类
btoi=newBufferToImage((VideoFormat)buf.getFormat());
img=btoi.createImage(buf);//showtheimage
imgpanel.setImage(img);
}
保留图象的就未几说了,以下为示例代码
BufferedImagebi=(BufferedImage)createImage(imgWidth,imgHeight);
Graphics2Dg2=bi.createGraphics();
g2.drawImage(img,null,null);
FileOutputStreamout=null;
try
{
out=newFileOutputStream(s);
}
catch(java.io.FileNotFoundExceptionio)
{
System.out.println("FileNotFound");
}
JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParamparam=encoder.getDefaultJPEGEncodeParam(bi);
param.setQuality(1f,false);//不紧缩图象
encoder.setJPEGEncodeParam(param);
try
{
encoder.encode(bi);
out.close();
}
catch(java.io.IOExceptionio)
{
System.out.println("IOException");
}
再说说缺点:首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
页:
[1]