Una classe per creare QR Codes con PHP
Pagina 1 di 3
In questo articolo affronteremo un argomento di grande attualità: andremo alla scoperta dei QR Codes e vedremo come crearceli da soli attraverso il servizio Google Chart API e PHP.
Cosa sono i QR Codes
I QR codes sono dei codici a barre bidimensionali di forma quadrata pensati per essere letti e decodificati velocemente, caratteristica da cui prendono il nome: Quick Response.
Essendo sviluppati per essere decodificati velocemente, i QR Codes vengono utilizzati soprattutto per memorizzare informazioni (come la url di una pagina web o di una app, oppure un numero di telefono) che devono essere lette tramite dispositivi mobili (smartphone), i quali sono generalmente provvisti di software che ne permettono una facile decodifica.
Qui sotto vediamo un esempio pratico dell'uso dei QR codes, ne abbiamo, infatti, inserito uno contenente il link alla home-page di Mr.Webmaster. In questo modo, qualora l'articolo venisse stampato, sarà possibile accedere velocemente a questo sito web attraverso un qualsiasi dispositivo dodato di un interprete di QR Codes.

Altra caratteristica importante di questi codici è la robustezza. Infatti anche se danneggiati (si pensi, ad esempio, a delle macchie sulla pagina stampata) grazie al codice Reed-Solomon si è in grado di recuperare fino al 30% dell'informazione contenuta nel QR Code compromesso.
Vediamo, in questa tabella, i quattro livelli di correzione errori disponibili per i QR Codes e la relativa capacità di recupero:
| Livello | % di dati recuperabili |
|---|---|
| L | 7% |
| M | 15% |
| Q | 25% |
| H | 30% |
Capacità di memorizzazione
I QR codes possono contenere fino a 7.089 caratteri numerici, oppure fino a 4.296 caratteri alfanumerici. Essendo codici di forma quadrata hanno un numero uguale di righe e colonne, e proprio dal loro numero dipende la capacità di memorizzazione del QR Code.
Il numero di righe e colonne di un QR Code viene identificato dalla sua version. Le version vanno da 1 a 40, e l'incremento di una version comporta l'aggiunta di 4 righe e 4 colonne, si parte da 21 per arrivare a 177. Quindi un QR Code di version 1 è un quadrato formato da 21 righe e 21 colonne con capacità di memorizzazione fino a 25 caratteri alfanumerici, mentre un QR Code di version 40 ha 177 righe e 177 colonne e capacità di memorizzazione massima.
Capacità di memorizzazione per alcune version:
| Version | Righe x Colonne | Livello correzione dell'errore | Massimo numero di caratteri | |||
|---|---|---|---|---|---|---|
| Numerico | Alfanumerico | Binario | Kanji | |||
| 1 | 21x21 | L | 41 | 25 | 17 | 10 |
| M | 34 | 20 | 14 | 8 | ||
| Q | 27 | 16 | 11 | 7 | ||
| H | 17 | 10 | 7 | 4 | ||
| 2 | 25x25 | L | 77 | 47 | 32 | 20 |
| M | 63 | 38 | 26 | 16 | ||
| Q | 48 | 29 | 20 | 12 | ||
| H | 34 | 20 | 14 | 8 | ||
| 10 | 57x57 | L | 652 | 395 | 271 | 167 |
| M | 513 | 311 | 213 | 131 | ||
| Q | 364 | 221 | 151 | 93 | ||
| H | 288 | 174 | 119 | 74 | ||
| 40 | 177x177 | L | 7,089 | 4,296 | 2,953 | 1,817 |
| M | 5,596 | 3,391 | 2,331 | 1,435 | ||
| Q | 3,993 | 2,420 | 1,663 | 1,024 | ||
| H | 3,057 | 1,852 | 1,273 | 784 | ||
La capacità di memorizzazione di un QR Code dipende esclusivamente dalla sua versione e dal livello di correzione dell'errore (più il livello è basso e maggiore è la quantità di dati immagazzinabili), non dalla sua dimensione in pixel.
QR Code con Google Chart Api
Le Google Chart Api è una API messa a disposizione da Google che restituisce una immagine contenente un grafico in risposta a una richiesta fatta tramite GET o POST.
Ci sono diversi tipi di grafici che si possono creare attraverso questa API, ma noi ci concentreremo esclusivamente sui grafici di tipo QR Code.
La url alla quale fare le richieste per ottenere un grafico è https://chart.googleapis.com/chart a cui vanno aggiunti i parametri necessari, che nel nostro caso sono:
- cht: Tipo di grafico, nel nostro caso cht=qr
- chs: Dimensioni dell'immagine nel formato larghezza x altezza
- chl: I dati da inserire nel nostro QR Code in codifica UTF-8
- choe: Codifica del grafico, i possibili valori sono: UTF-8 (Default), Shift_JIS, ISO-8859-1. Si consiglia di lasciare UTF-8 se non in caso di esigenze particolari.
- chld: Livello di correzione dell'errore: L (default), M, Q, H
Un esempio di richiesta per la generazione di un QR Code è https://chart.googleapis.com/chart?cht=qr&chl=Hello+world&chs=200x200







