Traitement des images en Kotlin : aperçu des bibliothèques et exemples pratiques
Kotlin, en tant que langage de programmation moderne entièrement compatible avec Java, donne aux développeurs accès à tout l'écosystème de bibliothèques pour le traitement des images. Dans cet article, nous examinerons les principaux outils disponibles en Kotlin pour charger, traiter, transformer et enregistrer des images. Vous apprendrez à utiliser les fonctionnalités standard de Java (AWT, Swing) et les bibliothèques spécialisées pour résoudre des tâches typiques.
Outils standards Java AWT et Swing
Les fonctionnalités de base pour le traitement des images en Kotlin (comme en Java) sont fournies par les packages java.awt et javax.imageio. Les classes principales :
java.awt.image.BufferedImage— représente une image matricielle avec accès aux pixels.java.awt.Graphics2D— fournit des méthodes pour dessiner (lignes, formes, texte) sur l'image.javax.imageio.ImageIO— méthodes statiques pour lire et écrire des images dans différents formats (PNG, JPEG, BMP, GIF).java.awt.Color— gestion des couleurs.java.awt.image.RescaleOp,java.awt.image.ConvolveOp— filtres pour modifier la luminosité, le contraste, le flou.
Exemple 1 : Chargement, redimensionnement et enregistrement d'une image
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) { // Chargement de l'image source val originalImage: BufferedImage = ImageIO.read(File(inputPath))
// Création d'une nouvelle image de la taille spécifiée val resizedImage = BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_RGB) val graphics: Graphics2D = resizedImage.createGraphics()
// Configuration de la qualité du rééchantillonnage 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)
// Dessin de l'image redimensionnée graphics.drawImage(originalImage, 0, 0, targetWidth, targetHeight, null) graphics.dispose()
// Enregistrement du résultat ImageIO.write(resizedImage, "jpg", File(outputPath)) println("Image enregistrée : $outputPath")}
// Exemple d'appelfun main() { resizeImage("input.jpg", "output_resized.jpg", 800, 600)}Bibliothèque Thumbnailator
Thumbnailator est une bibliothèque populaire pour Java/Kotlin qui simplifie considérablement la création de miniatures et le redimensionnement d'images. Son principal avantage est son API fluide et simple.
Intégration (Gradle) :
implementation("net.coobird:thumbnailator:0.4.20")Exemple 2 : Création d'une miniature avec Thumbnailator
import net.coobird.thumbnailator.Thumbnailsimport java.io.File
fun createThumbnail(inputPath: String, outputPath: String, size: Int) { Thumbnails.of(File(inputPath)) .size(size, size) // miniature carrée .keepAspectRatio(true) // conserver les proportions .outputFormat("png") .toFile(File(outputPath)) println("Miniature créée : $outputPath")}
fun main() { createThumbnail("photo.jpg", "thumb.png", 150)}La bibliothèque prend également en charge le recadrage, la rotation, l'ajout de filigranes et le travail avec les flux.
Bibliothèque OpenCV pour Kotlin
Pour un traitement d'image informatique sérieux (reconnaissance faciale, filtrage, analyse de contours), on utilise
Aussi dans la bibliothèque
Internationalisation (i18n) en Swift pour iOS et macOS
Travailler avec les images en Go (Golang) : bibliothèques et exemples
Surveillance des applications C++ : bibliothèques et outils pour la collecte de métriques
Passport.js pour JavaScript (Node.js) : guide complet avec exemples