Générateur de codes QR en Kotlin : création et personnalisation de codes QR

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

Générateur de codes QR en Kotlin : guide complet

\n\n

Les codes QR sont devenus une partie intégrante du monde numérique moderne. Ils sont utilisés pour un échange rapide d'informations : des liens vers des sites web aux coordonnées et aux mots de passe Wi-Fi. Dans cet article, nous verrons comment créer votre propre générateur de codes QR en langage Kotlin en utilisant la bibliothèque populaire ZXing (« Zebra Crossing »). Kotlin, étant un langage moderne et concis, est parfaitement adapté au développement d'applications serveur et mobiles sous Android. Vous apprendrez à générer des codes QR de différents types, à personnaliser leur apparence et à les intégrer dans vos projets.

\n\n

Pourquoi Kotlin et ZXing ?

\n\n

Kotlin est un langage typé statiquement fonctionnant sur la JVM, activement soutenu par Google pour le développement Android. Sa syntaxe est propre et expressive, rendant le code plus lisible et moins sujet aux erreurs. La bibliothèque ZXing est le standard de facto pour travailler avec les codes QR et les codes-barres dans l'écosystème Java/Kotlin. Elle prend en charge de nombreux formats (QR Code, Data Matrix, Aztec et autres) et offre des possibilités de personnalisation flexibles.

\n\n

Installation et configuration

\n\n

Pour commencer, ajoutez la dépendance à votre fichier build.gradle.kts (si vous utilisez Gradle) :

\n\n
// Pour un projet JVM\nimplementation("com.google.zxing:core:3.5.3")\nimplementation("com.google.zxing:javase:3.5.3")\n\n// Pour un projet Android (généralement core suffit)\nimplementation("com.google.zxing:core:3.5.3")
\n\n

Si vous travaillez avec Maven, ajoutez les dépendances correspondantes dans pom.xml.

\n\n

Exemple de base : génération d'un code QR simple

\n\n

Créons une fonction simple qui génère un code QR à partir d'une chaîne de texte et l'enregistre sous forme d'image PNG.

\n\n
import com.google.zxing.BarcodeFormat\nimport com.google.zxing.qrcode.QRCodeWriter\nimport com.google.zxing.client.j2se.MatrixToImageWriter\nimport java.nio.file.Paths\n\nfun generateQRCode(text: String, filePath: String, width: Int = 300, height: Int = 300) {\n    val writer = QRCodeWriter()\n    val bitMatrix = writer.encode(text, BarcodeFormat.QR_CODE, width, height)\n    val path = Paths.get(filePath)\n    MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path)\n    println("Code QR enregistré avec succès dans : $filePath")\n}\n\nfun main() {\n    generateQRCode("https://pythonlib.ru", "qrcode_pythonlib.png")\n}
\n\n

Explication du code :

\n
    \n
  • QRCodeWriter() — crée une instance de writer pour les codes QR.
  • \n
  • encode() — encode la chaîne en une matrice binaire (image noir et blanc).
  • \n
  • MatrixToImageWriter.writeToPath() — méthode pratique pour enregistrer la matrice dans un fichier.
  • \n
\n\n

Personnalisation des couleurs et de la taille

\n\n

Par défaut, le code QR est en noir et blanc. Vous pouvez modifier ses couleurs en utilisant MatrixToImageConfig. Voici un exemple avec un code vert sur fond blanc :

\n\n
import com.google.zxing.client.j2se.MatrixToImageConfig\nimport java.awt.Color\nimport java.awt.image.BufferedImage\n\nfun generateColoredQRCode(text: String, filePath: String, \n                           foregroundColor: Color = Color.BLACK, \n                           backgroundColor: Color = Color.WHITE) {\n    val writer = QRCodeWriter()\n    val bitMatrix = writer.encode(text, BarcodeFormat.QR_CODE, 300, 300)\n    \n    val config = MatrixToImageConfig(foregroundColor.rgb, backgroundColor.rgb)\n    val bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix, config)\n    \n    // Enregistrer le BufferedImage dans un fichier\n    val outputFile = java.io.File(filePath)\n    javax.imageio.ImageIO.write(bufferedImage, "PNG", outputFile)\n    println("Code QR coloré enregistré dans : $filePath")\n}\n\nfun main() {\n    generateColoredQRCode("Hello, Kotlin!", "colored_qr.png", \n                          foregroundColor = Color(0x00AA00),                    

Recommendations