Redimensionar imágenes con Java

Hace poco me enfrenté al problema de redimensionar una imagen a un tamaño específico, y pues con java esto es muy sencillo.

Basta con estas dos líneas de código y ya esta:

public BufferedImage scaleBufferedJPGImage(BufferedImage originalImage){

AffineTransformOp op = new AffineTransformOp( AffineTransform.getScaleInstance(newWidth,newHeight), null);

return op.filter(originalImage, null);

}

Pero… ¿Qué pasa si estamos trabajando nuestra imagen como un arreglo de bytes?, en ese caso debemos hacer la conversión a BufferedImage y después de redimensionar, hacer la operación inversa. Veamos como quedaría:

private static final float IMAGE_DIMENSIONS = 235;

public static byte[] scaleJPGImage(byte[] originalImage) throws ImageFormatException, IOException {
ByteArrayInputStream bais = new ByteArrayInputStream(originalImage);
BufferedInputStream bis = new BufferedInputStream(bais);
com.sun.image.codec.jpeg.JPEGImageDecoder decoder = JPEGCodec
.createJPEGDecoder(bis);
BufferedImage bufferedImage = decoder.decodeAsBufferedImage();

bufferedImage = scaleBufferedJPGImage(bufferedImage);

ByteArrayOutputStream baos = new ByteArrayOutputStream();
BufferedOutputStream bai = newBufferedOutputStream(baos);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bai);
encoder.encode(bufferedImage);
returnbaos.toByteArray();

}

public static BufferedImage scaleBufferedJPGImage(BufferedImage originalImage) throws ImageFormatException,
IOException {
float height = Float.parseFloat(originalImage.getHeight() + “” );
float width = Float.parseFloat(originalImage.getWidth() + “”);

height = IMAGE_DIMENSIONS < height ? IMAGE_DIMENSIONS / height : 1;
width = IMAGE_DIMENSIONS < width ? IMAGE_DIMENSIONS / width : 1;

AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(width,height), null);

BufferedImage imageResult = op.filter(originalImage, null);
return imageResult;
}

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: