Redimensionador d imagens, funciona em um e nao em outro

OI gente alguem poderia me dizer pq esse redimensionador aki não está funcionando neste metodo de capturar tela:


import java.awt.AWTException;
import java.awt.Dimension;
import java.awt.Graphics2D;

import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;


public class ScreenShot2 extends java.applet.Applet implements Runnable {
	Thread capturador;

  static  BufferedImage imagem0 ;



//	o start da applet
	 public void start() {
		 capturador = new Thread(this);
		 capturador.start();//começa a correr a thread esse start eh do thread
		    }  

	 
//	Reziser da imagem, os doubles fazem os calculos, o affine serve para fazer o calculo da escala e devolve a imagem como result
	
	 
//metodo para atualização
public void atualiza(String arquivo){
      //tempo de espera
      String tempo = "0";//em milissegundo vezes um long mil abaixo para se tornarem segundos
      
      try {
         long time = Long.parseLong(tempo) * 1000L;
         System.out.println("Waiting " + (time / 1000L) +
            " second(s)...");
         Thread.sleep(time);
      } catch(NumberFormatException nfe) {
         System.err.println(tempo + " does not seem to be a " +
            "valid number of seconds.");
         System.exit(1);
      } catch (InterruptedException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
      
      
      
      Toolkit toolkit = Toolkit.getDefaultToolkit();
      Dimension screenSize = toolkit.getScreenSize();   
      Rectangle screenRect = new Rectangle(screenSize);

      
     // criar screenshot
      
      Robot robot = null;
      try {    	  
         robot = new Robot();
      } catch (AWTException e1) {
         // TODO Auto-generated catch block
         e1.printStackTrace();
         
      }
         BufferedImage imgcapturada=robot.createScreenCapture(screenRect);
[b]  imagem0 = ScreenShot2.resize(imgcapturada,800,600); [/b]  
      try { 	 
   

         ImageIO.write(imagem0, "jpg", new File(arquivo));//mudar extensão aki se possivel
         System.out.println("Arquivo gerado : "+arquivo);
      } catch (IOException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }         
      
   
   }
 



public void run() {for(int i = 0; i < 15; i++){//metodos da thread começados no start
    new ScreenShot().atualiza("c:/testea"+i+".gif");
	if (i>=14) {i=0;}}//Pra zerar td isso e recontinuar o loop
	
	
	
}

public static  BufferedImage resize(BufferedImage imagem, int newWidth, int newHeight) {
    BufferedImage results = new BufferedImage(newWidth, newHeight,BufferedImage.TYPE_INT_RGB);//mexer aki na color model
    Graphics2D g = results.createGraphics();
    double scaleX = newWidth / (double) imagem.getWidth();
    double scaleY = newHeight / (double) imagem.getHeight();
    AffineTransform xform = AffineTransform.getScaleInstance(scaleX, scaleY);
    g.drawRenderedImage(imagem, xform);
    g.dispose();
    return results;
}	 


}

mas funciona neste programa de imagens d webcam?

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.AffineTransform;
import java.awt.image.*;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;

public class Webcam extends java.applet.Applet implements Runnable	{
 Thread webcam;
 int delay;
	

	public void start() {
		 webcam = new Thread(this);
		 webcam.start();//começa a correr a thread esse start eh do thread
			}
	 public void run() {
			
			new Webcamshooter();
	}  
class Webcamshooter extends Frame {
	private BufferedImage image1;

	private FrameGrabber2 vision1;
	private int threshold = 200;
	private BufferedImage image2;

	
	public Webcamshooter() {
		 //tempo de espera
	      String tempo = "0";//em milissegundo vezes um long mil abaixo para se tornarem segundos
	      
	      try {
	         long time = Long.parseLong(tempo) * 1000L;
	        // System.out.println("Waiting " + (time / 1000L) +
	        //    " second(s)...");
	         Thread.sleep(time);
	      } catch(NumberFormatException nfe) {
	        // System.err.println(tempo + " does not seem to be a " +
	          //  "valid number of seconds.");
	         System.exit(1);
	      } catch (InterruptedException e) {
	         // TODO Auto-generated catch block
	         e.printStackTrace();
	      }
		
		
		try {
			vision1 = new FrameGrabber2();
			vision1.start();
		}
		catch(FrameGrabberException fge) {
			System.out.println(fge.getMessage());
		}
	[/code]

		[b]image1=	Webcam.resize(vision1.getBufferedImage(),300,225);//mudar parametros da imagem aki
		image2= Webcam.resize(vision1.getBufferedImage(),520,368);[/b][i]//SENDO QUE ESSE METODO getBufferedImage pega a buffered capturada pela cam[/i]
		[code]for(int i = 0; i < 22; i++){
			salva("c:/webcamimgI"+i+".gif",image1);
			salva("c:/webcamimgII"+i+".gif",image2);
			if (i>=21) {i=0;}
			}
		
		
		
	}

	private void salva(String arquivo,BufferedImage img) {
	
		 try {
	         ImageIO.write(img, "jpg", new File(arquivo));
	         System.out.println("Arquivo gerado : "+arquivo);
	      } catch (IOException e) {
	         // TODO Auto-generated catch block
	         e.printStackTrace();
	      }         
		
	}


	
}
//Reziser da imagem, os doubles fazem os calculos, o affine serve para fazer o calculo da escala e devolve a imagem como result
public static BufferedImage resize(BufferedImage image, int newWidth, int newHeight) {
    BufferedImage result = new BufferedImage(newWidth, newHeight,BufferedImage.TYPE_INT_RGB);//mexer aki na color model
    Graphics2D g = result.createGraphics();
    double scaleX = newWidth / (double) image.getWidth();
    double scaleY = newHeight / (double) image.getHeight();
    AffineTransform xform = AffineTransform.getScaleInstance(scaleX, scaleY);
    g.drawRenderedImage(image, xform);
    g.dispose();
    return result;
}

}

O Java só sabe ler arquivos .gif, mas não gravá-los.

ae q tah cara e u consigui gravar, e gravar com redimensionamento em forma de gif no caso da webcam, mas nesse d captura nao

pra gravar em foram d gif no windows simplesmente peguei e colokei .gif no final do nome do arquivo ele salva mudando a extensão