Datasta kuvioksi
QR-koodin tekeminen alkaa siitä, että valitaan dataan sopiva koodaustila: numeerinen, aakkosnumeerinen, tavu tai kanji. Koodaaja muuntaa datan biteiksi, jakaa ne 8-bittisiin koodisanoihin ja lisää valitun tason Reed–Solomon-virheenkorjauskoodisanat. Sen jälkeen se valitsee pienimmän version, johon data mahtuu.
Koodisanat sijoitetaan ruudukkoon siksak-reittiä pitkin, joka ohittaa kiinteät kuviot. Lopuksi koodaaja soveltaa yhtä kahdeksasta peitekuviosta rikkoakseen suuret tyhjät alueet tai sekavat muodot, ja tallentaa peitteen ja virheenkorjaustason muototietoon.
- Valitse koodaustila
- Koodaa data ja lisää virheenkorjauskoodisanat
- Valitse versio (koko)
- Sijoita paikannus-, ajoitus- ja kohdistuskuviot
- Täytä datamoduulit
- Käytä parasta kahdeksasta peitteestä ja kirjoita muototieto
Kamerakuvasta dataksi
Purku suorittaa samat vaiheet käänteisesti. Skanneri löytää kolme paikannuskuviota, joiden tumman ja vaalean suhde 1:1:3:1:1 erottuu useimmista kuvista, ja käyttää niitä ajoitus- ja kohdistuskuvioiden kanssa ruudukon kartoittamiseen. Se lukee muototiedon, poistaa peitteen ja kerää koodisanat.
Reed–Solomon-purku korjaa sitten väärin luetut koodisanat virheenkorjaustason rajaan asti. Jos liian suuri osa on vaurioitunut, koodin luku epäonnistuu eikä palauta väärää dataa, minkä vuoksi QR-koodit tuottavat harvoin sekavia tuloksia.
Miksi koolla ja kontrastilla on väliä
Jokainen vaihe riippuu siitä, että kamera erottaa tummat moduulit vaaleista. Pienet moduulit, heikko kontrasti, heijastus, epätarkkuus tai puuttuva hiljainen alue tekevät useammasta moduulista epävarman, ja virheenkorjaus pystyy imemään vain tietyn määrän. Kun data pidetään lyhyenä, kontrasti vahvana ja reunus vapaana, purkajalla on helpoin tehtävä.