2

重複の可能性:
Webカメラから画像をキャプチャしようとするとNullPointerExceptionが発生する

私はこの優れたWebカメラアプレットを見ましたが、私はJavaの初心者であり、Webカメラを介して写真を撮り、特定のパスに保存する別のJButton名前を付けようとしています。Capture

キャプチャボタンのコード

startC.addActionListener(new ActionListener()
        {           
            @Override
            public void actionPerformed(ActionEvent e)
            {               
                  // Grab a frame                 
                 FrameGrabbingControl fgc = new FrameGrabbingControl() {

                        @Override
                        public Component getControlComponent() {
                            // TODO Auto-generated method stub
                            return null;
                        }

                        @Override
                        public Buffer grabFrame() {
                            // TODO Auto-generated method stub
                            return null;
                        }
                    };  
                  player.getControl("javax.media.control.FrameGrabbingControl");    
                  buf = fgc.grabFrame();                  

                  // Convert it to an image               
                  BufferToImage btoi = new BufferToImage((VideoFormat)buf.getFormat());
                  img = btoi.createImage(buf);       

                  // show the image 
                  //imgpanel.setImage(img);       

                  // save image 
                  try {
                    saveJPG(img,"c:\\test.jpg");
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        });

JPGメソッドを保存

      public static void saveJPG(Image img, String s) throws IOException    
      {       
        BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB);      
        File outputfile = new File("C:\\saved.jpg");
        ImageIO.write(bi, "png", outputfile);
}

エラー

Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
    at com.colorfulwolf.webcamapplet.WebcamApplet$6.actionPerformed(WebcamApplet.java:524)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

524行目にコードがあります

BufferToImage btoi = new BufferToImage((VideoFormat)buf.getFormat());

FGC宣言

FrameGrabbingControl fgc = new FrameGrabbingControl() {                     
                        @Override
                        public Component getControlComponent() {
                            // TODO Auto-generated method stub
                            return null;
                        }

                        @Override
                        public Buffer grabFrame() {
                            // TODO Auto-generated method stub
                            return null;
                        }
                    };  
4

1 に答える 1

3

nullオブジェクトでメソッドを呼び出そうとしたため、アプリケーションはNullPointerExceptionをスローしますbuf

を宣言しても、はnullを返すためbuf = fgc.grabFrame();bufオブジェクトはnullになります。fgc.grabFrame()

@Override
public Buffer grabFrame() {
    // TODO Auto-generated method stub
    return null;
}

この問題を修正するには、実装new Buffer()の代わりに戻ることができます。nullfgc.grabFrame()

于 2012-09-24T20:27:58.170 に答える