title: When I try to capture a image from my webcam, its take a all black image
body: <p>I've downloaded a <a href="http://webcamapplet.sourceforge.net/" rel="nofollow">java project</a> in which interacts with my webcam. I'm trying to add the functionality to take pictures through the webcam, or just capture the current image and save it in my C: directory</p>
  
  <p>I created a button called Capture (startC) and did an ActionListener</p>
  
  <p><strong>ActionListener</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() {
                              // return null;
                              return new Buffer();
                          }
                      };  
                    player.getControl("javax.media.control.FrameGrabbingControl");    
                    buf = fgc.grabFrame();                  
  
                    // Convert it to an image               
                    BufferToImage btoi = new BufferToImage((VideoFormat)buf.getFormat());
                    // 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>UPDATED ActionListener</strong></p>
  
  <pre><code>startC.addActionListener(new ActionListener() {
              @Override
              public void actionPerformed(ActionEvent e) {
                  Vector devices = CaptureDeviceManager.getDeviceList(null);
                  CaptureDeviceInfo cdi = null;
                  for (Iterator i = devices.iterator(); i.hasNext();) {
                      cdi = (CaptureDeviceInfo) i.next();
                      /*
                       * Get the first Video For Windows (VFW) capture device. Use
                       * the JMF registry tool in the bin directory of the JMF
                       * distribution to detect available capture devices on your
                       * computer.
                       */
                      if (cdi.getName().startsWith("vfw:"))
                          break;
                  }
  
                  try {
                      player = Manager.createRealizedPlayer(cdi.getLocator());
                      player.start();
                  } catch (NoPlayerException e2) {
                      e2.printStackTrace();
                  } catch (CannotRealizeException e3) {
                      e3.printStackTrace();
                  } catch (IOException e4) {
                      e4.printStackTrace();
                  }
  
                  // start the Timer with 3s intervals
                  new Timer(3000, this).start();
  
                  // Grab a frame from the capture device
                  FrameGrabbingControl fgc = (FrameGrabbingControl) player.getControl("javax.media.control.FrameGrabbingControl");
                  buf = fgc.grabFrame();
                  BufferToImage btoi = new BufferToImage((VideoFormat) buf
                          .getFormat());
                  img = btoi.createImage(buf);
  });
  </code></pre>
  
  <p><strong>SaveJPG method</strong></p>
  
  <pre><code>      public static void saveJPG(Image img, String s) throws IOException    
        {       
          BufferedImage bi = new BufferedImage(640, 480, BufferedImage.TYPE_INT_RGB);
          File outputfile = new File("C:\\saved.jpg");
          ImageIO.write(bi, "png", outputfile);
  }
  </code></pre>
  
  <p>The problem is that when I click Capture, is simply saving a screen all black, and that's not what the webcam is focusing.</p>
  
  <p>Can someone help?</p>
  
  <p><strong>@UPDATE</strong></p>
  
  <p>Line 520 = <code>buf = fgc.grabFrame();</code></p>
  
  <pre><code>Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
      at com.colorfulwolf.webcamapplet.WebcamApplet$6.actionPerformed(WebcamApplet.java:520)
      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>