• <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>

    java+jmf怎么使用攝像頭拍照-攝像頭截圖

     java怎么利用jmf中的功能使攝像頭可以或許拍攝照片,下面我分享一下怎么建造。

    1、啟動攝像頭。

    2、截取攝像頭當前畫面:awt-image。

    3、把awt-image對象轉換當作swt-image對象。

    4、攝影:把當前截圖保留在文件傍邊。

    我寫的經驗對你進修 java有幫忙的話,給我投票或者保藏!

    http://v.youku.com/v_show/id_XMzk1OTYyNTYyNA==.html

    0利用媒體框架挪用攝像頭在窗口上顯示

    0安裝媒體框架

    東西/原料

    • eclipse mars 2
    • jmf 2-1-1

    方式/步調

    1. 1

      新建一個 swt-java項目:paizhao,把jmf包含的jar文件增添在項目中。

    2. 2

      新建一個窗口文件,把面板和按鈕增添在窗口中。

    3. 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. 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. 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. 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. 7

      把轉換當作swt-image對象畫在面板傍邊:

      e.gc.drawImage(swtimage, 0, 0, swtimage.getBounds().width, swtimage.getBounds().height, 0, 0, co.getBounds().width, co.getBounds().height);

    8. 8

      在初始化傍邊啟動截圖線程:

      new jietu().start();

    9. 9

      增添“攝影”代碼,把swt-image對象保留在文件傍邊:

      ImageLoader loa=new ImageLoader ();

      loa.data=new ImageData[]{swtimage.getImageData()};

      loa.save("c:/swtimage.jpg", SWT.IMAGE_JPEG);

    10. 10

      運行項目,點擊“攝影”,把截圖保留在c:\swtimage.jpg這個文件中。

    • 發表于 2018-12-12 00:00
    • 閱讀 ( 762 )
    • 分類:電腦網絡

    你可能感興趣的文章

    相關問題

    0 條評論

    請先 登錄 后評論
    聯系我們:uytrv@hotmail.com 問答工具
  • <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>
    久久久久精品国产麻豆