URL-QR-Code erzeugen mit zusätzlichem Klartext im Bild

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
htm
User
Beiträge: 1
Registriert: Sonntag 18. Februar 2024, 09:24

Hallo zusammen,
ich bin Python Anfänger und möchte gerne ein Python-Programm schreiben, das folgendes leistet:
1. Es soll ein QR-Code von einer URL erzeugt werden. Der QR-Code soll als png-Datei ausgegeben und gespeichert werden. Das hat soweit auch geklappt.
2. In der erzeugten png-Datei soll nicht nur der QR-Code stehen, sondern zusätzlich die kodierte URL im Klartext darunter. Das hat leider trotz vieler Versuche bisher nicht funktioniert.

Wer kann mir helfen, das Projekt zu realisieren?

Hier der Code den ich zuletzt erfoglos ausprobiert habe:

import qrcode
from PIL import Image, ImageDraw, ImageFont

# Die URL, die im QR-Code enthalten sein soll
url = "https://www.example.com"

# QR-Code generieren
qr = qrcode.make(url)

# URL im Klartext
klartext = f"URL: {url}"

# QR-Code und Klartext zusammenfügen
img = qr.get_image()
draw = ImageDraw.Draw(img)
font = ImageFont.load_default() # Du kannst auch eine andere Schriftart verwenden

# Größe des Textes ermitteln
font = ImageFont.load_default()
text_width, text_height = draw.textsize(klartext, font=font)

# Textposition berechnen
text_x = (img.width - text_width) // 2
text_y = img.height + 10

# Text zeichnen
draw.text((text_x, text_y), klartext, font=font)

# Bild speichern
img.save("qrcode_mit_klartext.png")

Ich bekomme beim Ausführen folgende Fehlermeldung:

Traceback (most recent call last):
File "C:\Python312\QR-Code-15.py", line 20, in <module>
text_width, text_height = draw.textsize(klartext, font=font)
AttributeError: 'ImageDraw' object has no attribute 'textsize'
Benutzeravatar
__blackjack__
User
Beiträge: 13240
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@htm: Was sagt denn die PIL/Pillow-Dokumentation zur `textsize()`-Methode? Wie kommst Du darauf, dass es die geben sollte?

Etwas rhetorische Frage, denn das sieht so aus als wenn Du den Quelltext nicht geschrieben hast, sondern das ChatGPT hast machen lassen. Lerneffekt hier sollte sein, dass programmieren per ChatGPT nicht funktioniert. Du wirst das schon selber lernen müssen. Denn um die Qualität und Sinnhaftigkeit von dem was KIs auswerfen beurteilen zu können, muss man das selbst programmieren können. Und wenn da Fehler drin sind erst recht.

In normalem Code kommentiert man auch nur Sachen die nicht schon offensichtlich im Quelltext stehen oder in der Dokumentation der verwendeten Programmiersprache und Bibliotheken. Bei Kommentaren immer schauen ob das einen Mehrwert bietet. Und falls ja, ob man den Code nicht deutlicher/verständlicher schreiben kann, so dass der Kommentar überflüssig wird. Beispielsweise in dem man bessere Namen verwendet, oder Code in eine Funktion oder Methode auslagert die einen Namen hat, der das Verständnis verbessert.
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
Antworten