手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

java+jmf怎么使用摄像头拍照-摄像头截图

时间:2024-10-13 06:17:42

1、新建一个 swt-java项目:paizhao,把jmf包含的jar文件增加在项目中。

java+jmf怎么使用摄像头拍照-摄像头截图
java+jmf怎么使用摄像头拍照-摄像头截图

2、新建一个窗口文件,把面板和按钮增加在窗口中。

java+jmf怎么使用摄像头拍照-摄像头截图

3、在open方法中,打开摄像头:CaptureDeviceManager.getDe箪滹埘麽vice("vfw:Microsoft WDM I罪焐芡拂mage Capture (Win32):0"); MediaLocator med=new MediaLocator("vfw://0"); try { player=Manager.createRealizedPlayer(med); if(player.getVisualComponent()!=null){ player.start();} } catch (NoPlayerException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } catch (CannotRealizeException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); }

java+jmf怎么使用摄像头拍照-摄像头截图

4、新建一个线程,刷新面板把摄像头的截兔脒巛钒图画在面板当中: public class jietu extends Thread{ public jietu(){ this.setDaemon(true); } public void run(){ while (true) { Display.getDefault().asyncExec(new Runnable() { public void run() { composite.redraw(); } }); try { sleep(80); } catch (InterruptedException e) { e.printStackTrace(); } } } }

java+jmf怎么使用摄像头拍照-摄像头截图

5、在面板中paint方法对摄像头截图:Composite co=(Composite)e.getSource(); FrameGrabbingControl fgc=(FrameGrabbingControl)player.getControl("javax.media.control.FrameGrabbingControl"); Buffer buffer=fgc.grabFrame(); BufferToImage bti=new BufferToImage((VideoFormat)buffer.getFormat()); java.awt.Image awtimage=bti.createImage(buffer);

java+jmf怎么使用摄像头拍照-摄像头截图

6、把截图awt-image转成swt-image对象:BufferedImage bi=(BufferedImage)awtimage; 艘早祓胂 ByteArrayOutputStream bs=new ByteArrayOutputStream(); try { ImageIO.write(bi, "jpg", bs); InputStream is=new ByteArrayInputStream(bs.toByteArray()); swtimage=new Image(shell.getDisplay(),is); e.gc.drawImage(swtimage, 0, 0, swtimage.getBounds().width, swtimage.getBounds().height, 0, 0, co.getBounds().width, co.getBounds().height); } catch (IOException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); }

java+jmf怎么使用摄像头拍照-摄像头截图

7、把转换成swt-image对象画在面板当中:e.gc.drawImage(swtimage, 0, 0, swtimage.getBounds().width, swtimage.getBounds().height, 0, 0, co.getBounds().width, co.getBounds().height);

java+jmf怎么使用摄像头拍照-摄像头截图

8、在初始化当中启动截图线程:new jietu().start();

java+jmf怎么使用摄像头拍照-摄像头截图

9、增加“拍照”代码,把swt-image对象保存在文件当中:ImageLoader loa=new ImageLoader (); loa.data=new ImageData[]{swtimage.getImageData()}; loa.save("c:/swtimage.jpg", SWT.IMAGE_JPEG);

java+jmf怎么使用摄像头拍照-摄像头截图

10、运行项目,点击“拍照”,把截图保存在c:\swtimage.jpg这个文件中。

java+jmf怎么使用摄像头拍照-摄像头截图
java+jmf怎么使用摄像头拍照-摄像头截图
© 手抄报圈