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
Também na biblioteca
AssertJ para Java: guia completo com exemplos práticos
Cliente OAuth para Java: visão geral das bibliotecas e exemplos de código
Registro em Kotlin: visão geral das melhores bibliotecas e soluções
Cache em Node.js: Redis, Memcached e memória interna
Gerador de QR Code em Go (Golang) com a biblioteca go-qrcode