Mit Hilfe der Python QR-Code-Generierungsbibliothek "qrcode" kann man ganz einfach QR-Code-Bilder generieren. Es ist auch mit "Pillow" möglich einen QR-Code in ein anderes Bild einzubetten oder ein Bild in einen QR-Code einzubetten. In diesem Beitrag zeige ich einige Beispiele.
Python QR-Code Bild-Generator: qrcode
Der QR-Code ist ein zweidimensionaler Code, der aus quadratischen schwarzen und weißen Punkten (Zellen) besteht, siehe auch https://de.wikipedia.org/wiki/QR-Code.
Python hat eine eigene Bibliothek zum Generieren von QR-Code-Bildern, siehe auch https://github.com/lincolnloop/python-qrcode.
Die Standardinstallation erfolgt mit dem folgenden Befehl:
pip install qrcode[pil]
Wenn man einen einfachen QR-Code erstellen möchte, funktioniert dies mit dem folgenden Befehl:
qr "Test Blog shemel.de" > qrcode.png
Hinweis: Ein QR-Code enthält nur eine Zeichenfolge (String).
QR-Code Bild mit Python erstellen
import qrcode
img = qrcode.make('https://www.shemel.de')
print(type(img))
print(img.size)
img.save('/home/hemel/qrcode_hemel_1.png')
Sollte der Fehler "AttributeError: module 'qrcode' has no attribute 'make'" erscheinen, bitte als Dateinamen NICHT qrcode.py wählen. Siehe auch https://github.com/lincolnloop/python-qrcode/issues/185.
Man kann auch mit Hilfe der QRCode-Klasse Details verändern:
qr = qrcode.QRCode(
version=12,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=2,
border=8
)
qr.add_data('htttps://www.shemel.de')
qr.make()
img = qr.make_image(fill_color="yellow", back_color="#23dda0")
img.save('/home/hemel/qrcode_hemel_2.png')
QR-Code in ein Bild einbetten
Mit Hilfe von PilImage kann man Image-Objekte direkt in andere Bilder einfügen bzw. einbetten.
Anbei ein Beispiel zum Einfügen des QR-Codes in der unteren rechten Ecke.
import qrcode
from PIL import Image
img_bg = Image.open('/home/hemel/blog.png')
qr = qrcode.QRCode(box_size=2)
qr.add_data('htttps://www.shemel.de')
qr.make()
img_qr = qr.make_image()
pos = (img_bg.size[0] - img_qr.size[0], img_bg.size[1] - img_qr.size[1])
img_bg.paste(img_qr, pos)
img_bg.save('/home/hemel/qrcode_hemel_3.png')
QR-Code zum Bezahlen benutzen
Siehe auch c't 9/2022 S. 8 https://www.heise.de/select/ct/2022/9/softlinks/yb26?wt_mc=pred.red.ct.ct092022.008.softlink.softlink und https://de.wikipedia.org/wiki/EPC-QR-Code.
import qrcode
vwz = "Rechnung 123456789"
iban = "DE02100500000054540402"
bic = "BELADEBE"
recipient = "Beispielfirma Musterdörfer"
amount = 55.25
filename = "epc_qr"
# The docs can be found here: https://pypi.org/project/qrcode/
qr = qrcode.QRCode(error_correction=qrcode.constants.ERROR_CORRECT_M)
qr.add_data("BCD\n")
qr.add_data("002\n")
qr.add_data("1\n")
qr.add_data("SCT\n")
qr.add_data(bic+"\n")
qr.add_data(recipient[0:69]+"\n")
qr.add_data(iban+"\n")
qr.add_data("EUR"+str(amount)+"\n")
qr.add_data("\n")
qr.add_data("\n")
qr.add_data(vwz[0:139]+"\n")
qr.make(fit=True)
img = qr.make_image()
img.save(filename+".png")