Tento článek patří do seriálu Vše okolo čárových a QR kódů. Ostatní články seriálu:
- Generátor čárových kódů
- Geneátor QR kódů
- Možnosti dat v QR kódech
- Optimalizace QR kódů
QR kódy jsou stále rozšířenější. Lze je vidět na budovách, na fakturách k placení, lístcích apod. Je to už nějaký ten pátek, co jsem psal článek o Generování čárových kódů, a tak je čas na generování také 2D kódů, konkrétně QR.
Pro rychlé generování QR kódu lze využít velmi kvalitní nástroj QR Code Monkey, který nabízí možnost přidání vlastní barvy, loga a další. Navíc QR kód lze stahovat ve všech možných formátech a velikostech.
QR - Quick Response code
Ještě se vrátím zpět k čárovým kódům. Poprvé jsem je použil na poukazy na SkiBílá.cz, protože na pokladnách jsou čtečky na různé slevové karty. Také čtečky čárových kódů jsou určitě levnější než čtečky QR kódů. Pokud ale je použita mobilní aplikace jako čtečka, QR kódy dostávají navrch.
QR kódy a jejich výhody
QR je zkratka pro Quick Response, a čtení rychlé je. Je to dáno převážně jeho konstrukcí a použitými technikami. Zatímco čárové kódy se dají číst vzhůru nohama, QR kódy se dají číst ze všech 4 stran. Obsahují také kontrolní součty dat, takže i při poškození je lze stále přečíst. U QR kódu ani nezáleží na konkrétní barvě, či menším rozmazání. Převážně pomalu ostřící telefony dokáží kód přečíst dříve, než úplně zaostří.
Na následujícím obrázku jsou zobrazeny různé QR kódy s menším, či větším poškozením, které lze stále přečíst. Někdy přečtení trvá opravdu dlouho (viz kód na 2. řáddku, 1. sloupci), ale přečíst se povede. Jako čtečku používám aplikaci Barcode Scanner na Android.
Možnosti, že kód lze trochu poničit a stále funguje, se dá využít pro vytvoření pěknějšího kódu s vlastním logem, zaoblenými rohy apod. O QR kódu je na Wikipedii trochu podrobnější pěkný článek, případně se stačí přepnout do angličtiny.
Oprava chyb při čtení
Jak již bylo zmíněno, QR kódy obsahují kontrolní součty, díky kterým i při poničení kódu je lze v pořádku přečíst. Při generování lze ale nastavit, jak moc těchto kontrolních dat má obsahovat. Lze vybrat celkem ze 4 úrovní, kolik procent kódu může být ztraceno pro správné přečtení:
- L - cca 7%
- M - cca 15%
- Q - cca 25%
- H - cca 30%
Je důležité zmínit, že pokud bude chybět 1/3 kódu v kuse, nemusí se jej povést přečíst, chyby by měly být rozprostřeny rovnoměrně po celém ploše kódu. Na ukázce výše jsou kódy L a H s maximální velikostí chyby, kterou se mi povedlo vytvořit pro úspěšné přečtení. U L kódu je to rozhodně menší plocha.
Generování kódu
Pro generování kódu v PHP lze využít knihovnu BaconQrCode, kterou lze nainstalovat pomocí composeru:
composer require bacon/bacon-qr-code
Knihovna bohužel nemá dokumentaci. Naštěstí je ale psána velmi pěkně, takže co nenabízí v základu, lze velmi jednoduše přidat nebo upravit pomocí dědění. Následující ukázka ale bude stačit pro 90% případů. Ale lze také generovat například SVG nebo EPS formát, i přizpůsobit barvy. Je to ale nutné dohledat v kódu.
$renderer = new \BaconQrCode\Renderer\Image\Png(); $renderer->setHeight(360); $renderer->setWidth(360); $writer = new \BaconQrCode\Writer($renderer); // Zapsání do souboru s defaultním kódováním (ISO-8859-1) // a nejnižší obnovou chyb, tj level L $writer->writeFile("https://www.kutac.cz/", "myQRcode.png"); // Získání binárních dat v defaultním kódování // s nejvyšší obnovou chyb (cca 30%) // Lze nastavit i jiná kódování, jako UTF-8, WINDOWS-1250 apod $binData = $writer->writeString("https://www.kutac.cz/", \BaconQrCode\Encoder\Encoder::DEFAULT_BYTE_MODE_ECODING, \BaconQrCode\Common\ErrorCorrectionLevel::H);
Se zkušenostmi s QR kódy, nebo i jinými kódy, se můžete podělit v komentářích.
K tomuto článku již není možné přidávat další komentáře