Trabalho com imagens em Kotlin: bibliotecas e ferramentas

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

Trabalho com imagens em Kotlin: visão geral das bibliotecas e exemplos práticos



Kotlin, sendo uma linguagem de programação moderna totalmente compatível com Java, oferece aos desenvolvedores acesso a todo o ecossistema de bibliotecas para trabalhar com imagens. Neste artigo, veremos as principais ferramentas disponíveis em Kotlin para carregar, processar, transformar e salvar imagens. Você aprenderá a usar os recursos padrão do Java (AWT, Swing) e bibliotecas especializadas para resolver tarefas típicas.



Ferramentas padrão Java AWT e Swing



A funcionalidade básica para trabalhar com imagens em Kotlin (assim como em Java) é fornecida pelos pacotes java.awt e javax.imageio. As principais classes:



  • java.awt.image.BufferedImage — representa uma imagem raster com acesso aos pixels.
  • java.awt.Graphics2D — fornece métodos para desenhar (linhas, formas, texto) na imagem.
  • javax.imageio.ImageIO — métodos estáticos para ler e escrever imagens em vários formatos (PNG, JPEG, BMP, GIF).
  • java.awt.Color — trabalho com cores.
  • java.awt.image.RescaleOp, java.awt.image.ConvolveOp — filtros para alterar brilho, contraste, desfoque.


Exemplo 1: Carregar, redimensionar e salvar uma imagem



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) { // Carregar a imagem original val originalImage: BufferedImage = ImageIO.read(File(inputPath))

// Criar uma nova imagem com o tamanho especificado val resizedImage = BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_RGB) val graphics: Graphics2D = resizedImage.createGraphics()

// Configurar a qualidade do redimensionamento 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)

// Desenhar a imagem redimensionada graphics.drawImage(originalImage, 0, 0, targetWidth, targetHeight, null) graphics.dispose()

// Salvar o resultado ImageIO.write(resizedImage, "jpg", File(outputPath)) println("Imagem salva: $outputPath")}

// Exemplo de chamadafun main() { resizeImage("input.jpg", "output_resized.jpg", 800, 600)}


Biblioteca Thumbnailator



Thumbnailator é uma biblioteca popular para Java/Kotlin que simplifica significativamente a criação de miniaturas e o redimensionamento de imagens. Sua principal vantagem é a API fluente simples.



Adicionar dependência (Gradle):

implementation("net.coobird:thumbnailator:0.4.20")


Exemplo 2: Criar uma miniatura com 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 quadrada .keepAspectRatio(true) // manter proporções .outputFormat("png") .toFile(File(outputPath)) println("Miniatura criada: $outputPath")}

fun main() { createThumbnail("photo.jpg", "thumb.png", 150)}


A biblioteca também suporta corte, rotação, adição de marcas d'água e trabalho com streams.



Biblioteca OpenCV para Kotlin



Para processamento sério de imagens computacionais (reconhecimento facial, filtragem, análise de contornos), é utilizado

Recommendations