
Kreativní QR kódy s Pythonem
QR kódy dnes najdete všude. Od jídelních lístků v restauracích až po reklamní plakáty, QR kódy se staly součástí našeho života. Tyto skenovatelné čtverečky v sobě mají zakódované informace, které umožňují přístup k webovým stránkám, vizitkám nebo profilům na sociálních sítích.
S trochou znalostí programování v Pythonu si můžete vytvářet vlastní kreativní QR kódy, které už nemusí být jen černobílé a statické!
V tomto článku si vyzkoušíte práci s jednou šikovnou knihovnu Pythonu, která umí vytvářet běžné i mikro QR kódy. A nejen vytvářet, ale i ukládat v mnoha formátech, jako např. PNG, SVG, PDF a dalších. Poradí si také s barvami a animacemi, takže vaší QR kreativitě už nebude bránit vůbec nic. 😉
Instalace
Instalace je záležitostí jednoho příkazu v terminálu (příkazová řádka). Pokud používáte editor Thonny, bude stačit pár kliků.
PIP
pip install segno
Conda
conda install conda-forge::segno
Thonny
Vyberte položku v menu Tools > Manage packages..., do vyhledávacího pole napište segno, klikněte na název první položky segno a klikněte tlačítko Install.
Import
Prvním krokem je import knihovny.
import segno
Hello, LovelyData
Zkuste si jednoduchý příklad, který vytvoří QR kód pro odkaz na stránky LovelyData.cz a uloží ho jako PNG bitmapu.
qr = segno.make("https://www.lovelydata.cz")
qr.save("lovely-qr.png")

Další formáty
Knihovna segno umí QR kódy ukládat v mnoha formátech. Kompletní seznam najdete na stránkách nápovědy.
Vyzkoušejte alespoň některé, včetně textového formátu:
qr = segno.make("https://www.lovelydata.cz")
# Ulož QR kód jako SVG, PNG, PDF a TXT
for typ in ("svg", "png", "pdf", "txt"):
qr.save(f"lovely-qr.{typ}")
Velikost
Na velikosti záleží. V případě QR kódů to platí na 100 %.
Výchozí nastavení pro měřítko (scale factor) je 1. Tedy, že velikost jednoho čtverečku v QR kódu se rovná jednomu pixelu.
Pokud potřebujete vygenerovat větší kód, stačí použít parametr scale.
qr = segno.make("https://www.lovelydata.cz")
qr.save("lovely-qr.png", scale=5)
Mikro QR kódy
Metoda segno.make() se snaží vytvořit co nejmenší QR kód.
Pokud je informace krátká (obsahuje jen několik znaků), vygeneruje se mikro QR kód.
qr = segno.make("LovelyData.cz")
qr.save("lovely-micro-qr.png")

Mikro QR kódy jsou méně používané, než běžné QR kódy. Některé čtečky je neumí přečíst. Proto se v praxi více využívají běžné QR kódy.
Pokud vám mikro QR nevyhovuje, můžete si vynutit standardní QR kód pomocí metody make_qr.
qr = segno.make_qr("LovelyData.cz")
qr.save("lovely-qr.png")

Barevné QR kódy
Základy jste zvládli. Máte chuť být trochu kreativnější? Vyzkoušejte barvy.
qr = segno.make("https://www.lovelydata.cz")
qr.save("lovely-color-qr.png",
dark="#900090",
light="#fde68a",
scale=10,)

Pro barvy můžete použít také běžné HTML názvy. Například:
qr = segno.make("https://www.lovelydata.cz")
qr.save("lovely-color-qr.png",
dark="DarkOrange",
light="LightCyan",
scale=10,)

Až si budete hrát s barvami, nezapomeňte na dobrý kontrast mezi světlými a tmavými částmi QR kódu. V opačném případě by QR čtečka mohla mít problém s přečtením kódu.
Nemusíte se omezovat jen na dvě barvy. QR kódy se skládají z více částí a pokud to vaše umělecké vyjádření vyžaduje, můžete obarvit i je. Další informace najdete v dokumentaci.
Obrázkové QR kódy
QR kódy mohou obsahovat obrázky, například logo vaší společnosti nebo vzdělávacího kurzu.
Pokud chcete využívat v QR kódech obrázky - a to i ty animované! - musíte si doinstalovat ještě knihovnu qrcode-artistic.
PIP
pip install qrcode-artistic
Conda
conda install conda-forge::qrcode-artistic
Thonny
Vyberte položku v menu Tools > Manage packages..., do vyhledávacího pole napište qrcode-artistic, klikněte na název první položky qrcode-artistic a klikněte tlačítko Install.
QR kód se statickým obrázkem
qr = segno.make("https://www.lovelydata.cz/mooc/kurz/LDO056-datova-gramotnost-pro-kazdeho/",
error="h")
qr.to_artistic(background="datova-gramotnost-pro-kazdeho.png",
target="lovely-kurz-qr.png",
scale=10)

Možná jste si všimli, že v předchozím příkladu je navíc parametr error="h".
Jedná se o korekci chyb (Error correction level), která pomáhá lepší čitelnosti kódu. To platí zejména pro kódy s obrázky nebo animacemi.
QR kód s animací načtenou z URL
Pokud máte pocit, že obrázek bez animace je nuda, tak knihovna umožňuje použít animovaný obrázek.
Obrázky není nutné mít uložené na počítači. Můžete je načíst rovnou z webu.
import segno
from urllib.request import urlopen
qr = segno.make("https://www.lovelydata.cz",
error="h")
bg = urlopen("https://media.giphy.com/media/26BRABnerqonwLHMc/giphy.gif")
qr.to_artistic(background=bg,
target="lovely-animace-qr.gif",
scale=10)

Závěr
Knihovna segno toho umí daleko víc - například generovat vizitky nebo QR platby. Navíc má podrobnou dokumentaci, což nebývá vždy pravidlem.
Mohlo by vás zajímat
Blog

Přestaňte obviňovat model, začněte klást lepší otázky

Brzdí vás Excel? Vlastní datové aplikace rychle a bez programátorů.

Jak vytváříme jednoúčelové aplikace s pomocí AI
Kurzy

Python - základy

Základy Tableau

Excelentní Triky 1

Python pro každý den

OK, Python

