|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你说是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的复杂性。 |
|