Processamento de Imagens em Java: Bibliotecas e Exemplos de Código

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalhando com Imagens em Java: Visão Geral Completa de Bibliotecas e Ferramentas



O Java oferece ferramentas poderosas para trabalhar com imagens raster — desde o simples carregamento e salvamento até o processamento complexo usando filtros e redes neurais. Neste artigo, abordaremos três abordagens principais: a biblioteca integrada Java 2D, a especializada ImageJ e o padrão industrial OpenCV. Você aprenderá como escolher a ferramenta adequada e verá exemplos de código funcionais.



1. Biblioteca Integrada Java 2D (javax.imageio, java.awt)



Java 2D faz parte da biblioteca padrão do Java (JDK). Ela não requer a instalação de dependências adicionais e é ideal para operações básicas: carregamento, redimensionamento, corte, sobreposição de texto e filtros simples.



Classes principais:

  • javax.imageio.ImageIO — leitura e escrita de imagens (PNG, JPEG, BMP, GIF, WBMP).
  • java.awt.image.BufferedImage — representação da imagem na memória com acesso aos pixels.
  • java.awt.Graphics2D — contexto para desenho (redimensionamento, rotação, sobreposição).
  • java.awt.image.BufferedImageOp — interface para filtros (desfoque, contraste, correção de cor).


Exemplo 1: Carregamento, Redimensionamento e Salvamento

import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;

public class ImageResizer { public static void main(String[] args) throws IOException { // Carregamos a imagem original BufferedImage original = ImageIO.read(new File("input.jpg"));

// Novas dimensões (por exemplo, reduzimos para 300x200) int newWidth = 300; int newHeight = 200;

// Criamos uma nova imagem com as dimensões desejadas BufferedImage resized = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = resized.createGraphics();

// Desenhamos a imagem original com redimensionamento g2d.drawImage(original, 0, 0, newWidth, newHeight, null); g2d.dispose();

// Salvamos o resultado ImageIO.write(resized, "jpg", new File("output.jpg")); System.out.println("Pronto! Tamanho alterado."); }}


Exemplo 2: Aplicação de Filtro Integrado (Desfoque)

import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.awt.image.ConvolveOp;import java.awt.image.Kernel;import java.io.File;

public class BlurFilter { public static void main(String[] args) throws Exception { BufferedImage img = ImageIO.read(new File("input.jpg"));

// Kernel de desfoque 3x3 (box blur) float[] blurKernel = { 1f/9f, 1f/9f, 1f/9f, 1f/9f, 1f/9f, 1f/9f, 1f/9f, 1f/9f, 1f/9f }; Kernel kernel = new Kernel(3, 3, blurKernel); ConvolveOp convolve = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null); BufferedImage blurred = convolve.filter(img, null);

ImageIO.write(blurred, "jpg", new File("blurred.jpg")); }}


2. Biblioteca ImageJ — Para Imagens Científicas e Médicas



ImageJ é uma ferramenta popular para processamento de imagens, originalmente escrita em Java. Ela oferece centenas de plugins prontos, macros e uma API poderosa. É ideal para análise de microscopia, imagens de satélite e qualquer tarefa que exija estatísticas de pixels.



Adicionando dependência (Maven):

<dependency>    <groupId>net.imagej</groupId>    <artifactId>ij</artifactId>    <version>1.53t</version></dependency>


Exemplo: Análise de Histograma e Processamento por Limiar

import ij.IJ;import ij.ImagePlus;import ij.                    

Recommendations