Préambule – Mise en contexte
Ayant besoin de réaliser un QR code l’autre jour (Pierrick, si tu me lis ; spéciale dédicace 😜), et ne voulant pas passer par un service en ligne, j’ai cherché à le faire en python.
Après une recherche avec Firefox et Qwant (je n’utilise pas Chrome ni Google), j’ai trouvé cet article en anglais sur geeksforgeeks.
(après cette année en alternance à 95% en anglais, je ne recherche plus uniquement des ressources en Français)
On édite le code python et on remplace les valeurs voulues.
Pouf ; on joue le script.
OK, c’est bon, ça fait le job.
Oui … Mais … ça ne serait pas mieux si on pouvait utiliser le script sans avoir à le modifier en dur à chaque fois ?
Ne serait-il pas plus opportun de variabiliser des choses ?
Spécificités recherchées
Du coup, j’ai travaillé ce script hier pour en avoir un qui me pose des questions.
D’une part, c’est plus pratique et puis j’aime bien me parler ; il est gentil Alban 😀
- Tu veux un logo ou pas ?
- Si oui, quel est le chemin de l’image ?
- Quelle est l’adresse (ou le texte) que tu veux transformer en QRcode ?
- Tu veux quelle couleur pour ce QRcode ?
- Je mets quoi en nom pour le fichier créé ?
Résultat avec logo
Résultat sans logo
Conclusion
Oui, tout ça pour ça …
Mais je pense que cet article sera utilisé par des gens qui cherchent à générer des QR codes et/ou à s’amuser avec Python comme je le fais.
Certes, je suis devenu Administrateur Systèmes et Réseaux le mois dernier, mais je n’ai jamais étudié le Python et j’imagine qu’il y a plein de gens comme moi 😉
Le code
A l’image de mon année passée, j’utilise l’anglais (à mon niveau) dans mes scripts.
C’est donc « bilingal » comme code 😀
#!/usr/bin/python3
# -*- coding: utf-8 -*
# Script d'origine :
# https://www.geeksforgeeks.org/how-to-generate-qr-codes-with-a-custom-logo-using-python/
# import modules
import qrcode
from PIL import Image
# You have 2 parts in this script
# At first, you generate a QRcode with an image in the center of the QR code
# Or, you generate a QRcode without image.
Logo_added=(int(input("Voulez-vous ajouter un logo à votre QRcode ? :\n 0 = non ; 1 = oui\n")))
# Generating QRcode and Adding an image in the QR code center
if Logo_added>0:
Logo_link =(input("notez le chemin du fichier image\nPar exemple : /home/alban/gererate_qr-code/tux.jpeg\n"))
logo = Image.open(Logo_link)
# taking base width
basewidth = 100
# adjust image size
wpercent = (basewidth/float(logo.size[0]))
hsize = int((float(logo.size[1])*float(wpercent)))
logo = logo.resize((basewidth, hsize), Image.ANTIALIAS)
QRcode = qrcode.QRCode(
error_correction=qrcode.constants.ERROR_CORRECT_H
)
# taking url or text
url=(input("Tapez l'adresse complète avec https:// ou le texte voulu :\n"))
# adding URL or text to QRcode
QRcode.add_data(url)
# generating QR code
QRcode.make()
# taking color name from user
#QRcolor = 'Orange'
QRcolor=(input("Quelle couleur voulez-vous ?\norange, black, white, ... ???\n"))
# adding color to QR code
QRimg = QRcode.make_image(
fill_color=QRcolor, back_color="White").convert('RGB')
# set size of QR code
pos = ((QRimg.size[0] - logo.size[0]) // 2,
(QRimg.size[1] - logo.size[1]) // 2)
QRimg.paste(logo, pos)
# save the QR code generated
#QRimg.save('gfg_QR_bis.png')
name_wanted=(input("Tapez le nom voulu (sans extention) pour le fichier PNG du QR-code :\n"))
name_out=name_wanted+'.png'
QRimg.save(name_out)
print('QR code generated!')
# Generating QRcode without image
else:
print("OK, pas de logo\n")
# adjust image size
QRcode = qrcode.QRCode(
error_correction=qrcode.constants.ERROR_CORRECT_H
)
# taking url or text
url=(input("Tapez l'adresse complète avec https:// ou le texte voulu :\n"))
# adding URL or text to QRcode
QRcode.add_data(url)
# generating QR code
QRcode.make()
# taking color name from user
#QRcolor = 'Orange'
QRcolor=(input("Quelles couleur voulez-vous ?\nOrange, Black, White, ... ???\n"))
# adding color to QR code
QRimg = QRcode.make_image(
fill_color=QRcolor, back_color="White").convert('RGB')
# save the QR code generated
#QRimg.save('gfg_QR_bis.png')
name_wanted=(input("Tapez le nom voulu (sans extention) pour le fichier PNG du QR-code :\n"))
name_out=name_wanted+'.png'
QRimg.save(name_out)
print('QR code generated!')
Spéciale dédicace pour Yohan 😀
Non !!!
Non, non, non !
Tu ne nommes jamais un fichier « logo entreprise.jpg » MAIS « logo_entreprise.jpg » 😉
Yo !
Pas mal cet article… Au moins on peut personnaliser les QR code sans limite.
Merci
Sauf si … Non … Rien 😀