python qr kódy segno obrázek animace
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.