
Sie können ganz einfach QR-Code-Bilder mit Pythons QR-Code-Generierungsbibliothek qrcode generieren. Es ist auch möglich, mit Kissen einen QR-Code in ein anderes Bild einzubetten oder ein Bild in einen QR-Code einzubetten.
Dieser Artikel hat folgenden Inhalt.
- Python-QR-Code-Bildgenerator:
qrcode
- Generieren Sie ein QR-Code-Bild über die Befehlszeile
- Generieren Sie ein QR-Code-Bild mit Python-Code
- QR-Code-Version des generierten Bildes:
version
- Fehlerkorrekturstufe:
error_correction
- Zellengröße:
box_size
- Randbreite:
border
- Farbe:
fill_color, back_color
- QR-Code-Version des generierten Bildes:
- Betten Sie den QR-Code in das Bild ein
- Betten Sie das Bild in den QR-Code ein
Python-QR-Code-Bildgenerator:qrcode
Der QR-Code ist ein zweidimensionaler Code, der aus quadratischen schwarzen und weißen Punkten (Zellen) besteht und von ISO (ISO / IEC 18004) und JIS (JIS-X-0510) standardisiert ist.
Python hat eine Bibliothek qrcode zum Generieren von QR-Code-Bildern.
Es kann mit pip (oder pip3) installiert werden.
Bitte installieren Sie auch Kissen (PIL).
Generieren Sie ein QR-Code-Bild über die Befehlszeile
Wenn Sie nur ein einfaches QR-Code-Bild erstellen möchten, können Sie die Befehlszeile verwenden.
Sobald SIE qrcode installiert haben, can SIE den Befehl qr verwenden.
$ qr "text for qrcode" > qrcode.png
In diesem Beispiel WIRD Eine QR-Code-Bilddatei mit dem Namen qrcode.png generiert, die Zeichenfolgendatentext für qrcode enthält. Die Bildgröße wird automatisch an die Länge der Schnur angepasst.
QR-Code enthält nur eine Zeichenfolge. Wie eine Zeichenfolge verarbeitet wird, hängt von der Anwendung ab, sterben den QR-Code liest.
Zum Beispiel WIRD in vielen Smartphone-Kamera-Apps sterben Das Lesen von QR-Codes unterstützen, Wenn der QR-Code Eine URL enthält, Eine Benachrichtigung angezeigt, ob die URL geöffnet Werden soll, und wenn der Benutzer stirbt zulässt, WIRD SIE im Browser geöffnet.
Generieren Sie ein QR-Code-Bild mit Python-Code
qrcode.make() erstellt ein PilImage-Objekt.
Mit dem PilImage-Objekt können Sie die Attribute und Methoden des Pillow(PIL)-Image-Objekts verwenden, z. B. die Größe.
Verwenden Sie save(), um als Bilddatei zu speichern.
import qrcode
img = qrcode.make('test text')
print(type(img))
print(img.size)
#
# (290, 290)
img.save('data/dst/qrcode_test.png')
Sie können auch die QRCode-Klasse verwenden, um die Details zu ändern.
Der klassische Ablauf ist wie folgt.
qr = qrcode.QRCode()
qr.add_data('test text')
qr.make()
img = qr.make_image()
img.save('data/dst/qrcode_test2.png')
Sie können verschiedene Einstellungen vornehmen.
qr = qrcode.QRCode(
version=12,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=2,
border=8
)
qr.add_data('test text')
qr.make()
img = qr.make_image(fill_color="red", back_color="#23dda0")
img.save('data/dst/qrcode_test2_2.png')
Jeder Parameter wird beschrieben.
QR-Code-Version des generierten Bildes:version
Die Version des QR-Codes des generierten Bildes kann auf Version gesetzt werden.
Informationen zum Verhältnis zwischen der Informationskapazität und den Versionen des QR-Codes finden Sie auf der offiziellen Seite von Denso Wave unten.
Mit zunehmendem Versionswert nimmt die Anzahl der im QR-Code übernommenen Zellen (quadratische schwarze und weiße Punkte) zu, und die Bildgröße und die Informationskapazität nehmen zu. Der Mindestwert der Version ist 1 und der Höchstwert 40.
Durch die Angabe der Version können Sie ein QR-Code-Bild generieren, das größer als die optimale Version (Mindestgröße) ist. Dies ist auch nützlich, wenn Sie mehrere QR-Codes mit unterschiedlichen Dateninhalten und Größe derselben erstellen möchten.
Beachten Sie, dass selbst WENN SIE eine kleinere Version angeben und die Daten nicht passieren, automatisch sterben Mindestversion used WIRD, sterben zu den Daten passt.
Fehlerkorrekturstufe:error_correction
Sie können die Fehlerkorrekturstufe mit error_correction festlegen.
Es gibt die folgenden vier Ebenen. Die Werte in Klammern geben die Fehlerkorrekturfähigkeit an (Fehlerkorrekturrate für alle Codewörter).
- qrcode.constants.ERROR_CORRECT_L (ca. 7 %)
- qrcode.constants.ERROR_CORRECT_M (ca. 15 %, Standard)
- qrcode.constants.ERROR_CORRECT_Q (ca. 25 %)
- qrcode.constants.ERROR_CORRECT_H (ca. 30 %)
Weitere Informationen zur QR-Code-Fehlerkorrekturfunktion finden Sie auf der offiziellen Seite von Denso Wave unten.
Beim Generieren eines QR-Code-Bildes aus einer gleich langen Zeichenfolge erhöht das. Erhöhen der Fehlerkorrekturstufe sterben Größe des generierten QR-Code-Bildes.
Zellengröße:box_size
Mit box_size can SIE sterben Größe der Zelle (quadratischer schwarzer und weißer Punkt) in Pixeln festlegen.
Auch wenn die Version dieselbe ist (die Anzahl der Zellen ist dieselbe), can SIE die Größe des generierten Bildes ändern, indem Sie box_size ändern.
Der Standardwert ist 10.
Randbreite:border
Mit Grenze can SIE sterben Breite (Anzahl der Zellen) des äußeren Randes festlegen.
Die Anzahl der Pixel in der Randbreite ist box_size * border.
Der Standardwert ist 4, was die Mindestbreite in der Spezifikation ist.
Farbe: Füllfarbe, Hintergrundfarbe
Sie können die Farbe mit fill_color und back_color der Methode make_image() festlegen.
Geben Sie fill_color und back_color mit den Farbnamen black, white, red usw. oder dem Stil #xxxxxx an.
Betten Sie den QR-Code in das Bild ein
PilImage-Objekte können mithilfe der paste()-Methode des Pillow Image-Objekts direkt in andere Bilder eingefügt werden.
Der Beispielcode zum Einfügen des QR-Codes in der unteren rechten Ecke lautet wie folgt.
import qrcode
from PIL import Image
img_bg = Image.open('data/src/lena.jpg')
qr = qrcode.QRCode(box_size=2)
qr.add_data('I am Lena')
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('data/dst/qr_lena.png')
Weitere Informationen zu einfügen() finden Sie in den folgenden Artikeln:
Betten Sie das Bild in den QR-Code ein
Das Bild lässt sich einfach in den QR-Code einbetten.
Beachten Sie, dass das Einblenden eines Bildes in einem QR-Code offiziell nicht empfohlen WIRD.
Ist es in Ordnung, QR Codes mit Farben oder einer eingefügten Illustration zu verwenden?
Benutzer von QR-Codes müssen darauf achten, den Code nicht zu verformen, indem sie ihn mit einer Illustration überlagern oder ein Design darauf anbringen. Wenn es verformt IST, WIRD die Fehlerkorrekturfunktion des QR-Codes aufgerufen, Wenn selbst ein winziger fehlender oder verschmierter Teil den Lesevorgang unmöglich macht oder die Reaktion des Vorgangs langsam werden kann.
DENSO WAVE empfiehlt, dass Sie den QR-Code gemäß den Spezifikationen im JIS- oder ISO-Standard verwenden, um ein stabiles Lesen des QR-Codes zu gewährleisten.
Wenn der QR-Code außerdem mit Einer Illustration oder Einem Design überlagert WIRD, darf der resultierende Code nicht mehr als QR-Code bezeichnet werden, da es keinen Standard für diese Art von Vorgang gibt.Obwohl DENSO WAVE auf seine Rechte an QR-Codes verzichtet, solange sie dem JIS- oder ISO-Standard entsprechen, ist dies bei Codes, die nicht dem Standard entsprechen, nicht unbedingt der Fall. DENSO WAVE kann beschließen, seine Patentrechte gegen solche Codes geltend zu machen.
Wenn Sie erwägen, eine Illustration oder ein Design mit einem QR-Code zu arrangieren, wenden Sie sich bitte vorher an DENSO WAVE bezüglich Ihres Projekts.
face = Image.open('data/src/lena.jpg').crop((175, 90, 235, 150))
qr_big = qrcode.QRCode(
error_correction=qrcode.constants.ERROR_CORRECT_H
)
qr_big.add_data('I am Lena')
qr_big.make()
img_qr_big = qr_big.make_image().convert('RGB')
pos = ((img_qr_big.size[0] - face.size[0]) // 2, (img_qr_big.size[1] - face.size[1]) // 2)
img_qr_big.paste(face, pos)
img_qr_big.save('data/dst/qr_lena2.png')
Abhängig von der Größe des einzubettenden Bildes ist es sicher, die Fehlerkorrekturstufe (error_correction) auf eine hohe Stufe zu setzen. Auch beim Einbetten eines Farbbildes in einen schwarz-weißen QR-Code ist es notwendig, den QR-Code mit convert(‚RGB‘) in den RGB-Modus umzuwandeln.