Trabajo con imágenes en Kotlin: resumen de bibliotecas y ejemplos prácticos
Kotlin, siendo un lenguaje de programación moderno completamente compatible con Java, brinda a los desarrolladores acceso a todo el ecosistema de bibliotecas para trabajar con imágenes. En este artículo, revisaremos las principales herramientas disponibles en Kotlin para cargar, procesar, transformar y guardar imágenes. Aprenderá a utilizar las capacidades estándar de Java (AWT, Swing) y bibliotecas especializadas para resolver tareas típicas.
Herramientas estándar de Java AWT y Swing
La funcionalidad básica para trabajar con imágenes en Kotlin (al igual que en Java) la proporcionan los paquetes java.awt y javax.imageio. Las clases principales son:
java.awt.image.BufferedImage— representa una imagen rasterizada con acceso a los píxeles.java.awt.Graphics2D— proporciona métodos para dibujar (líneas, formas, texto) sobre la imagen.javax.imageio.ImageIO— métodos estáticos para leer y escribir imágenes en varios formatos (PNG, JPEG, BMP, GIF).java.awt.Color— trabajo con colores.java.awt.image.RescaleOp,java.awt.image.ConvolveOp— filtros para cambiar brillo, contraste, desenfoque.
Ejemplo 1: Cargar, redimensionar y guardar una imagen
import java.awt.image.BufferedImageimport java.awt.Graphics2Dimport java.awt.RenderingHintsimport java.io.Fileimport javax.imageio.ImageIO
fun resizeImage(inputPath: String, outputPath: String, targetWidth: Int, targetHeight: Int) { // Cargar la imagen original val originalImage: BufferedImage = ImageIO.read(File(inputPath))
// Crear una nueva imagen del tamaño especificado val resizedImage = BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_RGB) val graphics: Graphics2D = resizedImage.createGraphics()
// Configurar la calidad del remuestreo graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR) graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY) graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)
// Dibujar la imagen escalada graphics.drawImage(originalImage, 0, 0, targetWidth, targetHeight, null) graphics.dispose()
// Guardar el resultado ImageIO.write(resizedImage, "jpg", File(outputPath)) println("Imagen guardada: $outputPath")}
// Ejemplo de llamadafun main() { resizeImage("input.jpg", "output_resized.jpg", 800, 600)}Biblioteca Thumbnailator
Thumbnailator es una biblioteca popular para Java/Kotlin que simplifica enormemente la creación de miniaturas y el redimensionamiento de imágenes. Su principal ventaja es su API fluida y sencilla.
Inclusión (Gradle):
implementation("net.coobird:thumbnailator:0.4.20")Ejemplo 2: Crear una miniatura con Thumbnailator
import net.coobird.thumbnailator.Thumbnailsimport java.io.File
fun createThumbnail(inputPath: String, outputPath: String, size: Int) { Thumbnails.of(File(inputPath)) .size(size, size) // miniatura cuadrada .keepAspectRatio(true) // mantener proporciones .outputFormat("png") .toFile(File(outputPath)) println("Miniatura creada: $outputPath")}
fun main() { createThumbnail("photo.jpg", "thumb.png", 150)}La biblioteca también admite recorte, rotación, adición de marcas de agua y trabajo con flujos.
Biblioteca OpenCV para Kotlin
Para el procesamiento informático serio de imágenes (reconocimiento facial, filtrado, análisis de contornos) se utiliza
También en la biblioteca
Validación de datos en Kotlin: bibliotecas, enfoques y ejemplos de código
Aprendizaje automático en Java: revisión de las principales bibliotecas para desarrollo
Trabajo con XML en JavaScript (Node.js): bibliotecas y ejemplos