Bibliothèque go-qrcode : génération de QR codes en Go (Golang)
\n\nLes QR codes sont devenus une partie intégrante du web moderne et des applications mobiles. Ils sont utilisés pour accéder rapidement à des liens, transmettre des coordonnées, s'authentifier, et bien plus encore. Si votre projet est écrit en Go (Golang), l'une des meilleures bibliothèques pour créer des QR codes est go-qrcode. Dans cet article, nous allons détailler ses fonctionnalités, son installation et des exemples d'utilisation.
Qu'est-ce que go-qrcode ?
\n\ngo-qrcode est une implémentation pure d'un générateur de QR codes en langage Go. Elle n'a aucune dépendance externe (en dehors de la bibliothèque standard) et prend en charge toutes les fonctions principales : configuration de la taille, du niveau de correction d'erreurs, de la couleur et de l'arrière-plan. La bibliothèque peut générer des images PNG ainsi que des données binaires brutes pour un traitement ultérieur.
Installation
\n\nL'installation de la bibliothèque se fait avec la commande standard go get :
go get github.com/skip2/go-qrcode\n\nEnsuite, vous pouvez l'importer dans votre projet :
\n\nimport (\n "github.com/skip2/go-qrcode"\n)\n\nFonctionnalités principales
\n\n- \n
- Génération d'images PNG — le cas d'utilisation le plus courant. \n
- Configuration du niveau de correction d'erreurs — Low, Medium, High, Highest. \n
- Modification de la taille — de 21x21 à 177x177 modules. \n
- Configuration des couleurs — vous pouvez définir la couleur du premier plan et de l'arrière-plan. \n
- Prise en charge d'Unicode — vous pouvez encoder n'importe quel texte, y compris le cyrillique. \n
- Sortie en format brut — un tableau d'octets pour un traitement personnalisé. \n
Exemples de code
\n\n1. QR code très simple
\n\nGénérons un QR code pour une URL et sauvegardons-le dans un fichier :
\n\npackage main\n\nimport (\n "github.com/skip2/go-qrcode"\n)\n\nfunc main() {\n err := qrcode.WriteFile("https://pythonlib.ru", qrcode.Medium, 256, "qrcode.png")\n if err != nil {\n panic(err)\n }\n}\n\nDans cet exemple, nous utilisons le niveau de correction d'erreurs moyen (qrcode.Medium) et une taille d'image de 256x256 pixels.
2. Configuration des couleurs
\n\nSi vous avez besoin d'une couleur de QR code non standard, utilisez la structure qrcode.Config :
package main\n\nimport (\n "image/color"\n "github.com/skip2/go-qrcode"\n)\n\nfunc main() {\n qr, err := qrcode.New("Bonjour le monde !", qrcode.Highest)\n if err != nil {\n panic(err)\n }\n\n // Configuration de la couleur\n qr.ForegroundColor = color.RGBA{R: 0, G: 150, B: 255, A: 255} // bleu\n qr.BackgroundColor = color.RGBA{R: 255, G: 255, B: 255, A: 255} // blanc\n\n err = qr.WriteFile(256, "custom_qrcode.png")\n if err != nil {\n panic(err)\n }\n}\n\n3. Obtention du PNG sous forme d'octets
\n\nParfois, il n'est pas nécessaire de sauvegarder le fichier, mais de fournir l'image via HTTP ou de la traiter ultérieurement. Pour cela, utilisez la méthode PNG() :
package main\n\nimport (\n "fmt"\n "github.com/skip2/go-qrcode"\n)\n\nfunc main() {\n qr, err := qrcode.New("https://example.com", qrcode.Low)\n if err != nil {\n panic(err)\n }\n\n pngBytes, err := qr.PNG(256)\n if err != nil {\n panic(err)\n }\n\n fmt.Printf("Taille du PNG : %d octets\\n", len(pngBytes))\n // Maintenant, pngBytes peut être envoyé dans une réponse HTTP ou sauvegardé\n}\n\n4. Génération avec une taille minimale
\n\nSi vous souhaitez obtenir le plus petit QR code possible, utilisez la méthode ToQRTerminal() pour le débogage dans le terminal, ou définissez la taille minimale du module :
package main\n\nimport (\n "fmt"\n "github.com/skip2/go-qrcode"\n)\n\nfunc main() {\n qr, err := qrcode.New("1234567890", qrcode.High)\n if err != nil {\n panic(err) Aussi dans la bibliothèque
Tests en C++ : aperçu des frameworks et outils (Google Test, Catch2, doctest)
Conteneur d'injection de dépendances pour Java : Spring IoC, Google Guice et Dagger