- 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這個文件中。