reducir el tamaño de imagenes con java
Publicado por paquete (1 intervención) el 12/05/2009 09:33:52
Buenas,
tengo un trozo decódigo java que me sirve para redimensionar el tamaño de imagenes. Hasta aquí bien, por que es lo que me interesa y funciona. El problema es que cuando la imagen a reducir (la original) sobre pasa un tamaño (a partir de 800k mas o menos) no funciona pero tampoco da ningun error, simplemente la imagen destino sale todo en negro.
Este es el codigo que utilizo para reducir el tamaño:
//esto deja la imagen original en un objeto Image
Image image = Toolkit.getDefaultToolkit().getImage(imgOriginal);
// esto reduce la imagen a los valores de las variables width, height
BufferedImage tnsImg = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = tnsImg.createGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.drawImage(image, 0, 0, width, height, null);
//esto guarda la imagen en un fichero jpg
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(imgResult));
//creamos el "parseador" para guardar la imagen en formato JPG
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(tnsImg);
//Asignamos la calidad con la que se va a guardar la imagen de 0-100
calidad = Math.max(0, Math.min(calidad, 100));
param.setQuality((float)calidad / 100.0f, false);
encoder.setJPEGEncodeParam(param);
encoder.encode(tnsImg);
out.close();
Gracias
tengo un trozo decódigo java que me sirve para redimensionar el tamaño de imagenes. Hasta aquí bien, por que es lo que me interesa y funciona. El problema es que cuando la imagen a reducir (la original) sobre pasa un tamaño (a partir de 800k mas o menos) no funciona pero tampoco da ningun error, simplemente la imagen destino sale todo en negro.
Este es el codigo que utilizo para reducir el tamaño:
//esto deja la imagen original en un objeto Image
Image image = Toolkit.getDefaultToolkit().getImage(imgOriginal);
// esto reduce la imagen a los valores de las variables width, height
BufferedImage tnsImg = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = tnsImg.createGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.drawImage(image, 0, 0, width, height, null);
//esto guarda la imagen en un fichero jpg
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(imgResult));
//creamos el "parseador" para guardar la imagen en formato JPG
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(tnsImg);
//Asignamos la calidad con la que se va a guardar la imagen de 0-100
calidad = Math.max(0, Math.min(calidad, 100));
param.setQuality((float)calidad / 100.0f, false);
encoder.setJPEGEncodeParam(param);
encoder.encode(tnsImg);
out.close();
Gracias
Valora esta pregunta


0