- 1
新建一個 swt-java項目:paizhao,把jmf包含的jar文件增添在項目中。
 
 
  - 2
新建一個窗口文件,把面板和按鈕增添在窗口中。
 
  - 3
在open方式中,打開攝像頭:
CaptureDeviceManager.getDevice("vfw:Microsoft WDM Image 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();
		}
0利用媒體框架挪用攝像頭在窗口上顯示
 
  - 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();
				}
            }
        }
	}
 
  - 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);
 
  - 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();
						}
 
  - 7
把轉換當作swt-image對象畫在面板傍邊:
e.gc.drawImage(swtimage, 0, 0, swtimage.getBounds().width, swtimage.getBounds().height, 0, 0, co.getBounds().width, co.getBounds().height);
 
  - 8
在初始化傍邊啟動截圖線程:
new jietu().start();
 
  - 9
增添“攝影”代碼,把swt-image對象保留在文件傍邊:
ImageLoader loa=new ImageLoader ();
				loa.data=new ImageData[]{swtimage.getImageData()};
				loa.save("c:/swtimage.jpg", SWT.IMAGE_JPEG);
 
  - 10
運行項目,點擊“攝影”,把截圖保留在c:\swtimage.jpg這個文件中。