Travail avec les images en Kotlin : bibliothèques et exemples de code

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travail avec les images en Kotlin : aperçu des bibliothèques et exemples pratiques

Kotlin est un langage multiplateforme moderne, activement utilisé pour le développement sur JVM (Desktop), Android, ainsi que dans les projets backend et multiplateformes (KMP). Travailler avec des images est une tâche courante, et l'écosystème Kotlin propose plusieurs approches : de l'utilisation des bibliothèques Java standard aux solutions spécialisées pour Android et Kotlin Multiplatform. Dans cet article, nous passerons en revue les principales bibliothèques et outils, montrerons des exemples de code et donnerons des recommandations pratiques.



1. Outils intégrés : AWT (Java Desktop / JVM)

Pour les applications de bureau sur JVM (par exemple, JavaFX ou Swing), il est plus pratique d'utiliser les packages standard java.awt et javax.imageio. Ces bibliothèques sont disponibles « prêtes à l'emploi » et permettent de charger, redimensionner, convertir des formats et dessiner sur des images.

Exemple : chargement, redimensionnement et enregistrement

import java.awt.image.BufferedImageimport java.io.Fileimport javax.imageio.ImageIO

fun resizeImage(inputPath: String, outputPath: String, newWidth: Int, newHeight: Int) { val original: BufferedImage = ImageIO.read(File(inputPath)) val resized = BufferedImage(newWidth, newHeight, original.type) val g = resized.createGraphics() g.drawImage(original, 0, 0, newWidth, newHeight, null) g.dispose() ImageIO.write(resized, "jpg", File(outputPath)) println("Image enregistrée : $outputPath")}

fun main() { resizeImage("input.jpg", "output.jpg", 800, 600)}

Pour la rotation, l'ajout de filigranes ou le recadrage, vous pouvez utiliser les méthodes Graphics2D et les transformations affines.



2. Android : Bitmap et BitmapFactory

Dans le développement Android avec Kotlin, la base pour travailler avec les images est la classe android.graphics.Bitmap et les utilitaires BitmapFactory. Ils permettent de charger des images depuis les ressources, les fichiers ou le réseau, ainsi que d'effectuer un traitement de base.

Exemple : chargement depuis les ressources et redimensionnement (Android)

import android.graphics.Bitmapimport android.graphics.BitmapFactoryimport android.graphics.Matriximport java.io.ByteArrayOutputStream

fun scaleBitmap(bitmap: Bitmap, maxSize: Int): Bitmap { val width = bitmap.width val height = bitmap.height val scale = if (width > height) maxSize.toFloat() / width else maxSize.toFloat() / height val matrix = Matrix() matrix.postScale(scale, scale) return Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true)}

fun bitmapToByteArray(bitmap: Bitmap, quality: Int = 90): ByteArray { val stream = ByteArrayOutputStream() bitmap.compress(Bitmap.CompressFormat.JPEG, quality, stream) return stream.toByteArray()}

Pour un traitement plus complexe (filtres, effets), vous pouvez utiliser android.renderscript (obsolète dans l'API 31) ou la bibliothèque OpenCV Android.



3. Kotlin Multiplatform (KMP) : bibliothèque KVision ou solutions personnalisées

Dans les projets multiplateformes, il n'existe pas de norme unique pour travailler avec les images. On utilise souvent :

  • KVision — un framework pour les applications web en Kotlin/JS, avec une prise en charge intégrée du travail avec Canvas et ImageData.
  • Okio + ImageIO (JVM) / Bitmap (Android) — pour KMP, on écrit souvent des wrappers expect/actual, où chaque plateforme utilise sa propre implémentation.
  • Skiko — une bibliothèque de JetBrains pour le travail graphique (Skia), disponible sur JVM, JS et Native. Elle permet de charger, dessiner et exporter des images.

Exemple expect/actual pour KMP :

// commonMainexpect fun loadImageBytes(path: String): ByteArray

// androidMainactual fun load

Recommendations