Générer des codes QR avec python (niveau : débutant)
(Source : https://medium.com/better-programming/how-to-generate-and-decode-qr-codes-in-python-a933bce56fd0)
A la fin de cet article, vous saurez créer des codes QR (trois modes : rapide, normal et personnalisé) que vous pourrez intégrer dans vos productions.
Un code QR, aussi appelé QR code (de l'anglais : quick response code, « code à réponse rapide ») est un type de code-barres en deux dimensions (ou code matriciel) constitué de modules noirs disposés dans un carré à fond blanc. L'agencement de ces points définit l'information que contient le code.
(Source : https://fr.wikipedia.org/wiki/Code_QR)
Il y a quatre parties dans cet article :
1. Préparatifs
2. Mode rapide
3. Mode normal
4. Mode personnalisé
1. Préparatifs
Il faut au préalable installer la bibliothèque qrcode.
Si vous utilisez l’éditeur Edupython, dans la barre de menu, choisir :
Outils > Outils > Installation d’un nouveau module
> Choix 2 : Installation à l’aide de pip > Votre choix : 2
>Nom du module : qrcode
2. Mode rapide
Après avoir enregistré le code suivant dans un dossier, vous pourrez y récupérer le QR code après exécution.
______________________________________________________________________________________
import qrcode
from PIL import Image
texte = 'Je suis pressé ! \n http://www.ac-guadeloupe.fr'
imgModeRapide = qrcode.make(texte)
imgModeRapide.save("qr_code_mode_rapide.png")
______________________________________________________________________________________
Remarque : on utilise « \n » pour faire un retour à la ligne dans la chaîne de caractères "texte".
Résultat :
3. Mode normal
En suivant la même procédure que dans l’exemple précédent :
______________________________________________________________________________________
import qrcode
from PIL import Image
qr = qrcode.QRCode(version=1,error_correction=qrcode.constants.ERROR_CORRECT_Q,box_size=6,border=8)
data="Code QR en mode normal \n A vous de jouer !"
qr.add_data(data)
qr.make(fit=True)
img=qr.make_image(fill="black",back_color="pink").convert('RGB')
img.save("codeQr_mode_normal.png")
______________________________________________________________________________________
Résultat :
Dans cette version, vous avez accès aux différents paramètres du code QR généré :
>>> version : Il existe différentes versions du code QR (de 1 à 40) allant de 25 à 4 296 caractères :
Ci-dessous, différentes versions de Code QR pour un taux de redondance de 7 %
(source : wikipedia)
|
|
|
Version 1, 21×21, 10-25 caractères.
|
Version 2, 25×25, 20-47 caractères.
|
Version 3, 29×29, 35-77 caractères.
|
|
|
|
Version 4, 33×33, 67-114 caractères.
|
Version 10, 57×57, 174 à 395 caractères.
|
Version 40, 177×177, 1 852 à 4 296 caractères.
|
>>> box_size : dimension (en pixels) de la plus petite unité d’information du code QR (petit carré)
>>> border : détermine l’épaisseur des bordures (taille minimale 4)
>>> error_correction : Les codes QR utilisent le système Reed-Solomon pour la correction d'erreur : le code peut contenir jusqu'à 30 % de redondance.
Capacité à corriger les erreurs :
- Niveau L : environ 7 % de redondance
- Niveau M : environ 15 %
- Niveau Q : environ 25 %
- Niveau H : environ 30 %
4. Mode personnalisé
Vous pouvez également, insérer un logo à l’intérieur de votre code QR.
Image à insérer :
Résultat :
Pour cela il suffit d’ajouter quelques lignes :
______________________________________________________________________________________
import qrcode
from PIL import Image
qr = qrcode.QRCode(version=1,error_correction=qrcode.constants.ERROR_CORRECT_Q,box_size=10,border=4)
data="BONNES FETES !"
qr.add_data(data)
qr.make(fit=True)
img=qr.make_image(fill="white",back_color="yellow").convert('RGB')
logo_display = Image.open('champagne80_80.png')
logo_display.thumbnail((80, 80))
logo_pos = ((img.size[0] - logo_display.size[0]) // 2, (img.size[1] - logo_display.size[1]) // 2)
img.paste(logo_display, logo_pos)
img.save("qrCodePersonnalise.png")
______________________________________________________________________________________
Bonnes créations !
Pour aller plus loin, reportez-vous à l’article original.
OG vocabulary