Ao setar uma imagem (foto) recebida em binário, precisei redimensioná-la
para que tivesse a mesma largura e altura. O trecho abaixo foi utilizado
para isso.
public void setFoto(byte[] foto) {
int novaLargura = 240;
int novaAltura = 240;
byte[] data = foto;
try {
if (foto != null && foto.length > 0) {
InputStream in = new ByteArrayInputStream(foto);
BufferedImage imagem = ImageIO.read(in);
if (imagem == null) {
log.info("Erro ao ler propriedades de foto.");
} else {
if (imagem.getWidth() != imagem.getHeight() || imagem.getWidth() > 400) {
BufferedImage novaImagem = new BufferedImage(novaLargura,
novaAltura, BufferedImage.TYPE_INT_RGB);
Graphics g = novaImagem.getGraphics();
g.drawImage(imagem, 0, 0, novaLargura, novaAltura, null);
g.dispose();
ByteArrayOutputStream bas = new ByteArrayOutputStream();
ImageIO.write(novaImagem, "JPEG", bas);
novaImagem.flush();
data = bas.toByteArray();
}
imagem.flush();
}
}
} catch (IOException e) {
log.info("Erro ao redimensionar foto.", e);
}
this.foto = data;
}
Nenhum comentário:
Postar um comentário