Arquivos de imagem são utilizados em quase todos os sistemas que conhecemos. Principalmente falando de sistemas Web, fazer o gerenciamento do tamanho desses arquivos e fundamental para garantir uma boa performance da navegação para os usuários.
Nesse post, vou mostrar como redimensionar uma imagem com Java.
Passo 1: Obtendo a File que você deseja redimensionar.
File imagem = new File("C:\\IMG\\imagem_exemplo.jpg");
BufferedImage bufferedImage = ImageIO.read(imagem);
Com isso estaremos trazendo a File que você deseja redimensionar para dentro do nosso script. Logo na primeira linha, basta alterar o caminho para o caminho da sua imagem.
Passo 2: Criando a imagem redimensionada.
BufferedImage bufferedResizedImage = new BufferedImage(500, 500, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = bufferedResizedImage.createGraphics();
graphics2D.drawImage(bufferedImage, 0, 0, 500, 500, null);
graphics2D.dispose();
Com isso estaremos criando em memória a imagem redimensionada, passando o novo tamanho que desejamos que ela tenha. Perceba que aqui, se sua imagem for retangular, a versão redimensionada dela ficará quadrada, com isso a proporcionalidade da imagem pode ser perdida.
Caso seja necessário, você pode deixar esses valores dinâmicos.
Passo 3: Salvando a imagem redimensionada.
ImageIO.write(bufferedResizedImage, "jpg", new File("C:\\IMG\\imagem_redimensionada.jpg"));
Desta forma você estará definindo o nome do novo arquivo gerado, bem como o caminho em que deseja armazena-lo.
Código Completo
package AcademicoTech;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ResizeImage {
public static void main(String[] args) throws IOException {
File imagem = new File("C:\\IMG\\imagem_exemplo.jpg");
BufferedImage bufferedImage = ImageIO.read(imagem);
BufferedImage bufferedResizedImage = new BufferedImage(500, 500, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = bufferedResizedImage.createGraphics();
graphics2D.drawImage(bufferedImage, 0, 0, 500, 500, null);
graphics2D.dispose();
ImageIO.write(bufferedResizedImage, "jpg", new File("C:\\IMG\\imagem_redimensionada.jpg"));
}
}
Perceba que com poucas linhas de código, em um sistema com uma grande quantidade de imagens armazenadas estaríamos economizando uma grande quantidade de espaço em disco. O espaço economizado dependerá apenas do tamanho original da imagem e do novo tamanho definido para redimensionamento.
Comentarios