domingo, 13 de setembro de 2009

Redimensionando Image no java

Esses dias eu precisei alterar a escala de algumas dezenas de imagens JPG.

Pra fugir do trabalho braçal de entrar uma a uma, procurei na Internê alguma coisa que me ajudasse, ligado a classe Image do Java, e achei algo parecido com isso aqui logo abaixo.

Essa receita de bolo lê o arquivo original, cria um buffer com a escala desejada da imagem, "redesenha" e grava a imagem na escala nova. Simples, mais ou menos rápido e sem muitas complicações!

// Pode ser um item de um array de nomes de arquivos de um diretorio
File meuArquivo = new File(nomeOrigem);

// O novo arquivo tem tamanho de 523 x 393
Image arquivoNovo = ImageIO.read(meuArquivo)
.getScaledInstance(523, 393,Image.SCALE_SMOOTH);


BufferedImage bim = new BufferedImage(523, 393, BufferedImage.TYPE_INT_RGB);

bim.createGraphics().drawImage(arquivoNovo, 0, 0, null);

FileOutputStream fos = new FileOutputStream(nomeDestino);

ImageIO.write(bim, "jpg", fos);

fos.close();