Trabajo con imágenes en Kotlin: bibliotecas y herramientas

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 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

Recommendations