
Comment générer des codes QR en Python
aux codes QR
« QR » dans le code QR signifie réponse rapide. Les codes QR sont un moyen émergent et simple de récupérer des informations sans rien taper ni chercher sur votre téléphone. Ces codes sont essentiellement un motif de carrés noirs et blancs, dans lesquels sont intégrés des codes numériques numérisables. De nos jours, les restaurants utilisent ces codes QR pour présenter le menu à leurs clients, les magasins et les marchés les utilisent comme moyen de paiement numérique sans contact, les équipes de gestion d’événements les utilisent pour un enregistrement rapide à leurs événements et conférences, etc.
Générer des codes QR
Comme mentionné précédemment, les codes QR sont développés sous la forme d’un motif ou d’une grille de petits carrés noirs et blancs qui stockent les informations sous forme binaire, c’est-à-dire sous forme de 0 et de 1. Les informations sont codées dans le code selon des arrangements spéciaux avec la possibilité de personnaliser les couleurs, l’arrière-plan et les cadres, tant que le motif reste le même.
Ce qui suit est un exemple de code QR généré à l’aide de Python :code QR » emballer:

La numérisation du code ci-dessus avec un scanner doté de capacités de numérisation de code QR vous mènera à mon profil TDS, où vous pourrez facilement accéder à des projets Python adaptés aux débutants.
Dans cet article, nous passerons en revue le package Python qrcodeen l’installant et en explorant ses différentes fonctions pour concevoir des QR Codes.
Installation du package
Avant de démarrer le projet, nous installerons les packages correspondants. J’utilise PyCharm IDE pour cette tâche. Pour installer le « qrcode » Python package, je vais aller sur le terminal Python et taper ce qui suit :
pip install qrcode

L’installation du package QRCode nous permettra de créer des codes QR sous forme de fichiers PNG et de les restituer dans la console Python. Cependant, si nous avons besoin de davantage de fonctionnalités liées aux images, nous devons installer le Pillow package pour les capacités de traitement d’images.
pip install "qrcode[pil]"

Importation d’une bibliothèque et génération d’un code QR simple
Nous allons maintenant commencer le codage. Tout d’abord, nous allons importer la bibliothèque et inclure un nom d’alias pour notre facilité. Comme on peut le voir dans la documentation QR Code Python, l’image QR Code d’une URL peut facilement être générée et enregistrée au format PNG à l’aide des lignes de code suivantes :
import qrcode as qr
img = qr.make("https://pypi.org/project/qrcode/")
img.save("Python QR Code Documentaion.png")

Il s’agit d’un simple code QR qui a été créé à l’aide du make() fonction et enregistré sous forme de fichier PNG à l’aide du save() fonction.
Fonctionnalité avancée
Pour les fonctionnalités avancées de traitement d’image, nous utiliserons la classe QRCode dans le qrcode Paquet Python.
Les classes et les objets sont un concept utile en programmation. Les classes Python fournissent un modèle pour la création d’objets partageant des fonctionnalités similaires, leurs attributs (variables) et méthodes (fonctions). Nous utiliserons le constructeur Python Class pour créer des codes QR en tant qu’objets de cette classe.
Ci-dessous le code générique qui nous permet de créer et d’enregistrer des QR codes :
import qrcode
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
qr.add_data('https://towardsdatascience.com/implementing-the-coffee-machine-project-in-python-using-object-oriented-programming/')
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
img.save("Understanding Classes and Objects.png")

Le code ci-dessus a créé et enregistré le code QR au format PNG. Si vous scannez le code ci-dessus, vous atterrirez sur un didacticiel Python intéressant qui explore comment le concept de classes et d’objets Python est implémenté dans des projets du monde réel.
Maintenant, plongeons en profondeur dans le code générique ci-dessus, explorons les fonctions et jouons avec leurs variations.
Création d’objet
La première ligne de code après l’importation du qrcode La bibliothèque crée l’objet, avec ses attributs et méthodes entourés de parenthèses.
qr = qrcode.QRCode(
...
...
...
...
...
)
Ici, qrcode fait référence au package Python et QRCode() fait référence à la Classe.
Définir la version
Il s’agit ensuite de définir le version. Nous pouvons définir le nombre entier de 1 à 40, ce qui entraînera différentes tailles de QR Code.
import qrcode
qr = qrcode.QRCode(
version=1,
...
...
...
...
)
Créons un QR Code avec le version variable définie sur 5.

Maintenant, fixons le version paramètre à 15 :

Comme on peut le voir dans les deux QR Codes ci-dessus, le version L’attribut détermine la taille du code QR. Le plus petit version 1 génère un QR Code sous forme de grille 21×21.
Correction d’erreur
Le prochain attribut que nous passerons en revue est error_correction. L’attribut Correction d’erreur gère la redondance des données, de sorte que même si le code QR est endommagé, il reste numérisable. Il existe 4 niveaux différents de error_correction:
- Correction d’erreur L : Ceci fournit le niveau de correction d’erreur le plus bas, soit 7 %
- Correction d’erreur M : fournit un niveau modéré de correction des données, 15 % ou moins, offrant ainsi un équilibre entre la correction d’erreur et la taille des données.
- Correction d’erreur Q : Cela fournit 25 % ou moins de correction d’erreur
- Correction d’erreur H : fournit un niveau élevé de correction d’erreur et convient aux applications susceptibles de subir de graves dommages et pour lesquelles la taille des données n’est pas un problème.
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
...
...
)
Plus la valeur en pourcentage de error_correctionplus il devient facile à numériser, même lorsque des parties sont endommagées. D’un autre côté, les codes QR deviennent plus gros, ce qui pose un problème lorsque la compression des données est une exigence principale.
Créons des QR Codes avec différents error_correction genres.




Comme le montre la variété des codes QR générés ci-dessus, comme le error_correction augmente, la complexité des codes QR augmente, ce qui signifie que la taille des données augmente, tandis que la redondance des données augmente également.
Taille de la boîte
Le prochain attribut que nous allons explorer et avec lequel nous jouerons est le box_size. Le box_size en Python qrcode La bibliothèque fait référence au nombre de pixels que le QR Code aura.
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
...
)
Voyons comment notre QR Code change avec différentes valeurs du box_size:



Les images ci-dessus montrent la différence lorsque les valeurs des pixels changent, bien qu’elles puissent être négligeables à l’œil nu lorsqu’il s’agit de petites différences.
Frontière
Le dernier attribut que nous devons définir pour créer l’objet est le border. Il s’agit de la zone entourant le code. La valeur minimale est de 4 et nous pouvons l’augmenter autant que nous le souhaitons. Voyons comment le code change avec les changements de cet attribut :


Nous pouvons voir la différence dans la bordure des images ci-dessus, qui peut facilement être personnalisée avec le border variable.
Ajout de données
Une fois notre objet créé, avec des valeurs particulières de version, error_correction taper, box_size et bordernous allons maintenant ajouter les données qui doivent être encodées sous forme de QR Code. Ces données peuvent être une chaîne, une URL, un emplacement, des informations de contact, etc. Cela peut être facilement fait via le add_data() méthode de cette classe.
import qrcode
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=1,
border=10,
)
qr.add_data('https://towardsdatascience.com/building-a-facial-recognition-model-using-pca-svm-algorithms-c81d870add16/')
qr.make(fit=True)
La dernière ligne de code ci-dessus appelle qr.make(fit=True). Celui-ci adapte automatiquement le QR Code aux données fournies, après analyse. Il utilise le plus petit code QR possible pour accueillir les données et ne nous oblige pas à définir manuellement les attributs de dimensionnement.
Génération de l’objet image
Une fois l’objet QR Code créé, nous utiliserons PIL pour générer l’image tout en définissant ses couleurs, ainsi qu’en sauvegardant cette image de manière appropriée. Dans l’exemple suivant, nous définirons l’arrière-plan sur noir et la couleur de remplissage sur rose dans notre code QR, comme on peut le voir dans le code ci-dessous :
import qrcode
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=1,
border=10,
)
qr.add_data('https://towardsdatascience.com/using-python-to-build-a-calculator/')
qr.make(fit=True)
img = qr.make_image(fill_color="pink", back_color="black")
img.save("calc.png")

Conclusion
Dans cet article, nous avons exploré le package Python QR Code, qui inclut le modèle de création de codes QR et de leur enregistrement dans différents formats de fichiers. Il inclut également une personnalisation avancée de la génération de code QR, que nous avons réalisée avec la compréhension des classes et des objets. Il s’agissait d’un didacticiel Python simple et convivial pour les débutants qui nécessitait une certaine connaissance superficielle des classes et des objets.



