title: NullPointerException when attempting to save webcam image from Java Applet
body: <blockquote>
    <p><strong>Possible Duplicate:</strong><br>
    <a href="https://stackoverflow.com/questions/12571290/nullpointerexception-when-try-to-capture-imagem-from-webcam">NullPointerException when try to capture imagem from webcam</a>  </p>
  </blockquote>
  
  
  
  <p>I saw this good <a href="http://webcamapplet.sourceforge.net/how.html" rel="nofollow noreferrer">webcam applet</a> but i'm beginner with java, and I'm trying just put another <code>JButton</code> called <code>Capture</code> that will take a picture through the webcam and save in a specific path. </p>
  
  <p><strong>CODE OF MY CAPTURE BUTTON</strong></p>
  
  <pre><code>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();
                  }
              }
          });
  </code></pre>
  
  <p><strong>SAVE JPG METHOD</strong></p>
  
  <pre><code>      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);
  }
  </code></pre>
  
  <p><strong>ERROR</strong></p>
  
  <pre><code>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)
  </code></pre>
  
  <p>In my line 524 I have the code </p>
  
  <pre><code>BufferToImage btoi = new BufferToImage((VideoFormat)buf.getFormat());
  </code></pre>
  
  <p><strong>FGC declaration</strong></p>
  
  <pre><code>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;
                          }
                      };  
  </code></pre>