En lo que voy de mi proyecto, uno de los requerimientos es subir todo tipo de imagenes a la web y guardarlas en la base de datos. Obviamente si el usuario sube una imagen de 1MB yo no voy a guardar 1MB en un capo BLOB, aqui la implementacion de la solucion.

Basicamente la idea es reducir la imagen a un formato generico y asi poder guardarla en la base de datos (my proyecto asi lo requiere) o en cualquier lugar en el file system. Para reducir una imagen en Java el codigo seria…

public void resize(InputStream input, OutputStream output, int width, int height) throws Exception {
    BufferedImage src = ImageIO.read(input);
    BufferedImage dest = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    Graphics2D g = dest.createGraphics();
    AffineTransform at = AffineTransform.getScaleInstance((double)width / src.getWidth(), (double)height / src.getHeight());
    g.drawRenderedImage(src, at);
    ImageIO.write(dest, "JPG", output);
    output.close();
}

Basicamente este metodo recibe 1 outputstream (donde vamos a escribir el output de esta operacion) y un inputstream que es el source de nuestro archivo de imagen. El resto es bastante interpretable.

Categories: General

Rodrigo Asensio

Apasionado por la tecnología

1 Comment

Paola · November 1, 2012 at 1:47 pm

hola, tengo una duda sobre tu código en la parte de ImageIO.write(dest, “JPG”, output); estas cambiando el formato de la imagen??

También en la parte de:
AffineTransform at = AffineTransform.getScaleInstance((double)

No se alcanza ver toda la instruccion, podrias decirme como es que termina..

saludos!!!

Leave a Reply

Your email address will not be published. Required fields are marked *