
Puoi generare facilmente immagini di codici QR utilizzando la libreria di generazione di codici QR di Python qrcode. È anche possibile incorporare un codice QR in un’altra immagine o incorporare un’immagine in un codice QR utilizzando il cuscino.
In questo articolo vengono descritti i seguenti contenuti.
- Generatore di immagini codice QR Python:
qrcode - Genera l’immagine del codice QR dalla riga di comando
- Genera l’immagine del codice QR con il codice Python
- Versione del codice QR dell’immagine generata:
version - Livello di correzione degli errori:
error_correction - Dimensione della cella:
box_size - Larghezza del margine:
border - Colore:
fill_color, back_color
- Versione del codice QR dell’immagine generata:
- Incorpora il codice QR nell’immagine
- Incorpora l’immagine nel codice QR
Generatore di immagini codice QR Python:qrcode
Il codice QR è un codice bidimensionale composto da punti quadrati bianchi e neri (celle) standardizzati da ISO (ISO / IEC 18004) e JIS (JIS-X-0510).
Python ha una libreria qrcode per la generazione di immagini di codici QR.
Può essere installato con pip (o pip3).
Si prega di uccidere anche il cuscino (PIL)
Genera l’immagine del codice QR dalla riga di comando
Se vuoi solo creare una semplice immagine del codice QR, puoi utilizzare la riga di comando.
Una volta installato qrcode, puoi usare il comando qr.
$ qr "text for qrcode" > qrcode.png
In questo esempio, viene generato un file immagine di codice QR denominato qrcode.png contenente testo di dati stringa per qrcode. La dimensione dell’immagine viene regolata automaticamente in base alla lunghezza della stringa.
Il codice QR contiene solo una stringa. La modalità di elaborazione di una stringa dipende dall’applicazione che legge il codice QR.
Ad esempio, in molte app per fotocamere per smartphone supporta che la lettura del codice QR, se il codice QR contiene un URL, viene proveniente una notifica se apre l’URL e, se l’utente lo acconsente, si apre nel browser.
Genera l’immagine del codice QR con il codice Python
qrcode.make() crea l’oggetto PilImage.
Con l’oggetto PilImage, puoi utilizzare gli attributi ei metodi dell’oggetto Immagine Pillow(PIL), come la dimensione.
Usa save() per salvare come file immagine.
import qrcode
img = qrcode.make('test text')
print(type(img))
print(img.size)
#
# (290, 290)
img.save('data/dst/qrcode_test.png')

Puoi anche utilizzare la classe QRCode per modificare i dettagli.
Il flusso di base è il seguente.
qr = qrcode.QRCode()
qr.add_data('test text')
qr.make()
img = qr.make_image()
img.save('data/dst/qrcode_test2.png')
È possibile effettuare varie impostazioni.
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')

Sarà descritto di seguito.
Versione del codice QR dell’immagine generata:version
La versione del codice QR dell’immagine generata può essere impostata su versione.
Per il rapporto tra la capacità informativa e le versioni del QR code, fare riferimento alla pagina ufficiale di Denso Wave di seguito.
All’aumentare del valore della versione, aumenta il numero di celle (punti quadrati in bianco e nero) inclusi nel codice QR e la dimensione dell’immagine e la capacità di informazioni ad ampio raggio. Il valore minimo della versione è 1 e il massimo è 40.
Specificando la versione, puoi generare un’immagine di codice QR più grande della versione ottimale (dimensione minima), quindi è utile quando vuoi creare più codici QR con contenuti di dati diversi con la stessa dimensione.
Tieni presente che anche se specifichi una versione più piccola, se i dati non si adattano, sarà automaticamente la versione minima che si adatta ai dati.
Livello di correzione degli errori:error_correction
È possibile impostare il livello di correzione degli errori con correzione_errore.
Ci sono i seguenti quattro livelli. I valori tra parentesi indica la capacità di correzione degli errori (tasso di correzione degli errori per tutte le parole di codice).
- qrcode.constants.ERROR_CORRECT_L (circa 7%)
- qrcode.constants.ERROR_CORRECT_M (circa 15%, Si definisce predefinita)
- qrcode.constants.ERROR_CORRECT_Q (circa 25%)
- qrcode.constants.ERROR_CORRECT_H (circa 30%)
Per ulteriori informazioni sulla funzione di correzione degli errori del codice QR, fare riferimento alla pagina ufficiale di Denso Wave di seguito.
Quando si genera un’immagine del codice QR da una stringa della stessa lunghezza, aumentando il livello di correzione degli errori si aumenta la dimensione dell’immagine del codice QR generata.
Dimensione della cella:box_size
Con box_size, puoi impostare la dimensione della cella (punto quadrato bianco e nero) in pixel.
Anche se la versione è la stessa (il numero di celle è lo stesso), puoi cambiare la dimensione dell’immagine generata cambiando box_size.
Il valore predefinito è 10.
Larghezza del margine:border
Puoi usare il bordo per impostare la larghezza (numero di celle) del margine esterno.
Il numero di pixel nella larghezza del margine è box_size * bordo.
Il valore predefinito è 4, che è la larghezza minima nella specifica.
Colore: fill_color, back_color
Puoi impostare il colore con fill_color e back_color del metodo make_image().
Specificare fill_color e back_color utilizzando i nomi dei colori nero, bianco, rosso, ecc. o lo stile #xxxxxx.
Incorpora il codice QR nell’immagine
Gli oggetti PilImage possono essere incollati direttamente su altre immagini utilizzando il metodo paste() dell’oggetto Pillow Image.
Il codice di esempio per incollare il codice QR nell’angolo in basso a destra è il seguente.
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')

Per ulteriori informazioni su paste(), vedere i seguenti articoli:
Incorpora l’immagine nel codice QR
È facile incorporare l’immagine nel codice QR.
Si noti che la sovrapposizione di un’immagine su un codice QR non è consigliata.
Va bene usare i codici QR con i colori o un’illustrazione inserita?
Gli utenti di QR Code devono fare attenzione a deformare il codice sovrapponendolo a un’illustrazione o inserire un disegno su di esso. Se è deformato, viene richiamata la funzione di correzione degli errori del QR Code laddove anche una minuscola parte mancante o macchiata rende impossibile l’operazione di lettura, oppure la risposta dell’operazione può rallentare.
DENSO WAVE consiglia di utilizzare il codice QR seguendo le specifiche dello standard JIS o ISO per garantire una lettura stabile del codice QR.
Inoltre, se al QR Code è sovrapposta un’illustrazione o un disegno, il codice risultante potrebbe non essere più chiamato QR Code, poiché non esiste uno standard per eseguire questo tipo di operazione.DENSO WAVE rinunci ai suoi diritti sui codici QR purché seguano lo standard JIS o ISO, questo non è necessariamente il caso dei codici che non seguono lo standard. DENSO WAVE può decidere di esercitare i propri diritti di brevetto contro tali codici.
Se stai pensando di organizzare un’illustrazione o un design che coinvolga un codice QR, consulta in anticipo DENSO WAVE in merito al tuo progetto.
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')

A seconda delle dimensioni dell’immagine da incorporare, è possibile impostare il livello di correzione degli errori (correzione_errore) su un livello alto. Inoltre, quando si incorpora un’immagine a colori in un codice QR in bianco e nero, è necessario applicare il codice QR nella modalità RGB con convert(‘RGB’).
