Programa para reducir el tamaño una imagen

ditron77
17 de Febrero del 2010
Saludos, tal y como dice el titulo estoy buscando una aplicacion en java que reduzca el tamaño de una imagen. El siguiente programa me lo han pasado y se supone que realiza lo que busco, pero me da problemas con una libreria en concentreto y nosé si será porque esta anticuada o que, espero puedan ayudarme.

public class futos {

// Este m�todo es el encargado de leer una imagen de un fichero y
// crear la imagen reducida en otr fichero
public static int creaImagenReducida(int i,String s,String s1) {
int error = 0;
try {
Image image = Toolkit.getDefaultToolkit().getImage(s);
MediaTracker mediatracker = new MediaTracker(new Container());
mediatracker.addImage(image, 0);
mediatracker.waitForID(0);
int j = 0;
int k = 0;
int l = image.getWidth(null);
int i1 = image.getHeight(null);
double d = (double)l / (double)i1;
if(d > 1.0D)
{
k = i;
j = (int)((double)k / d);
} else
{
j = i;
k = (int)((double)j * d);
}
BufferedImage bufferedimage = new BufferedImage(k, j, 1);
Graphics2D graphics2d = bufferedimage.createGraphics();
graphics2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2d.drawImage(image, 0, 0, k, j, null);
BufferedOutputStream bufferedoutputstream = new BufferedOutputStream(new FileOutputStream(s1));
JPEGImageEncoder jpegimageencoder = JPEGCodec.createJPEGEncoder(bufferedoutputstream);
JPEGEncodeParam jpegencodeparam = jpegimageencoder.getDefaultJPEGEncodeParam(bufferedimage);
int j1 = 100;
j1 = Math.max(0, Math.min(j1, 100));
jpegencodeparam.setQuality((float)j1 / 100F, false);
jpegimageencoder.setJPEGEncodeParam(jpegencodeparam);
jpegimageencoder.encode(bufferedimage);
bufferedoutputstream.close();
} catch( Exception e ) {
System.out.println("Error en creaImagenReducida");
error=1;
}
return error;
}

public static void main(String[] args)
{
if (creaImagenReducida(100,"ejemplo.jpg","ejemplo_p.jpg")==1)
System.out.println("Error en creaImagenReducida");
else
System.out.println("Finalizado");
}
};

ERROR AL COMPILAR:

Fotos.java:50: cannot find symbol
symbol : method setJPEGEncodeParam(com.sun.image.codec.jpeg.JPEGEncodeParam)
location: class com.sun.image.codec.jpeg.JPEGImageEncoder
jpegimageencoder.setJPEGEncodeParam(jpegencodeparam);
^
1 error

Pues eso, espero k puedan ayudarme, muchas gracias.

kalua66
17 de Febrero del 2010
Aver si te sirve este trozo que utilizo yo..

String ruta="C:/1.jpg";

//paso la ruta al icon

ImageIcon icono=new ImageIcon(ruta);

//lo reescalo como imagen

Image imagen= icono.getImage().getScaledInstance(253,360,Image.SCALE_FAST); // numeros sera el alto y el ancho.

//lo vuelvo a psar a icon

ImageIcon iconoNuevo=new ImageIcon(imagen);

// y ya ese iconoNuevo puesdes pasarlo al boton jLabel olo que quieras con el: campo.setIcon(ICON);