Procesamiento de imágenes en Java: bibliotecas y ejemplos de código

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con imágenes en Java: resumen completo de bibliotecas y herramientas



Java proporciona potentes herramientas para trabajar con imágenes rasterizadas, desde la carga y guardado simples hasta el procesamiento complejo utilizando filtros y redes neuronales. En este artículo analizaremos tres enfoques principales: la biblioteca integrada Java 2D, la especializada ImageJ y el estándar industrial OpenCV. Aprenderá a elegir la herramienta adecuada y verá ejemplos de código funcionales.



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



Java 2D es parte de la biblioteca estándar de Java (JDK). No requiere instalar dependencias adicionales y es ideal para operaciones básicas: carga, cambio de tamaño, recorte, superposición de texto y filtros simples.



Clases principales:

  • javax.imageio.ImageIO — lectura y escritura de imágenes (PNG, JPEG, BMP, GIF, WBMP).
  • java.awt.image.BufferedImage — representación de la imagen en memoria con acceso a píxeles.
  • java.awt.Graphics2D — contexto de dibujo (escalado, rotación, superposición).
  • java.awt.image.BufferedImageOp — interfaz para filtros (desenfoque, contraste, corrección de color).


Ejemplo 1: Carga, cambio de tamaño y guardado

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 { // Cargamos la imagen original BufferedImage original = ImageIO.read(new File("input.jpg"));

// Nuevas dimensiones (por ejemplo, reducimos a 300x200) int newWidth = 300; int newHeight = 200;

// Creamos una nueva imagen con las dimensiones deseadas BufferedImage resized = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = resized.createGraphics();

// Dibujamos la imagen original con escalado g2d.drawImage(original, 0, 0, newWidth, newHeight, null); g2d.dispose();

// Guardamos el resultado ImageIO.write(resized, "jpg", new File("output.jpg")); System.out.println("¡Listo! Tamaño cambiado."); }}


Ejemplo 2: Aplicación de un filtro integrado (desenfoque)

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"));

// Núcleo de desenfoque 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 imágenes científicas y médicas



ImageJ es una herramienta popular para el procesamiento de imágenes, originalmente escrita en Java. Proporciona cientos de complementos listos, macros y una potente API. Es ideal para análisis de microscopía, imágenes satelitales y cualquier tarea que requiera estadísticas de píxeles.



Inclusión (Maven):

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


Ejemplo: Análisis de histograma y procesamiento por umbral

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

Recommendations