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.




