Générer un QR Code avec ou sans logo grâce à Python

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

Voici ma sortie écran
Voici le QRcode généré

Résultat sans logo

Autre capture de mon Terminal
QRcode menant à cet article

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 » 😉

A propos de Alban

Papa de 4 enfants étant lui-même resté un enfant. Diététicien-Nutritionniste tombé par obligation dans l'informatique à 22 ans pour le boulot et s'étant "un peu" pris au jeu ... Pas un génie de l'informatique (loin de là), mais intéressé et carrément orienté Linux et entraide. Lassé de l'évolution du Monde de la Santé dans lequel les patients sont de plus en plus à traiter comme des clients (je suis un soignant !!!), j'ai opté pour une reconversion en repartant en Alternance... à... 44 ans D'abord dans le cadre d'un BTS SIO option SISR (Solutions d’Infrastructure, Systèmes et Réseaux) en Septembre 2019. Après l’obtention du BTS (16,57/20 ;-) ), j'ai décidé de poursuivre (toujours en alternance) en Bac+3 avec un Bachelor Concepteur de Systèmes d'Information. Depuis septembre 2022, je suis donc encore plus vieux, mais un jeune diplômé "Administrateur Systèmes et Réseaux". (Bac+3 obtenu avec 16,40/20) Citation personnelle : « Si la réussite facile flatte l’égo, C’est de la persévérance que nait le plaisir de la réussite. »

2 commentaires à propos de “Générer un QR Code avec ou sans logo grâce à Python”

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.