Veriden desene
QR kod yapmak, veriye uyan bir kodlama modu seçmekle başlar: sayısal, alfanümerik, bayt veya kanji. Kodlayıcı veriyi bitlere çevirir, 8 bitlik kod sözcüklerine böler ve seçilen seviyede Reed–Solomon hata düzeltme kod sözcükleri ekler. Sonra sığan en küçük sürümü seçer.
Kod sözcükleri, sabit desenleri atlayan zikzak bir yolla ızgaraya yerleştirilir. Son olarak kodlayıcı, büyük boş alanları veya kafa karıştırıcı şekilleri dağıtmak için sekiz maske deseninden birini uygular ve maskeyi ile hata düzeltme seviyesini biçim bilgisine yazar.
- Kodlama modunu seç
- Veriyi kodla ve hata düzeltme kod sözcüklerini ekle
- Sürümü (boyutu) seç
- Bulucu, zamanlama ve hizalama desenlerini yerleştir
- Veri modüllerini doldur
- Sekiz maskenin en iyisini uygula ve biçim bilgisini yaz
Kamera görüntüsünden veriye
Çözme, aynı adımları tersine işletir. Tarayıcı, koyu ve açık 1:1:3:1:1 oranıyla çoğu görüntüden ayrışan üç bulucu deseni bulur ve bunları zamanlama ve hizalama desenleriyle birlikte ızgarayı haritalamak için kullanır. Biçim bilgisini okur, maskeyi kaldırır ve kod sözcüklerini toplar.
Ardından Reed–Solomon çözme, yanlış okunan kod sözcüklerini hata düzeltme seviyesinin sınırına kadar onarır. Çok fazlası hasarlıysa kod, yanlış veri döndürmek yerine okunamaz; QR kodların nadiren bozuk sonuç vermesinin nedeni budur.
Boyut ve kontrast neden önemli
Her adım, kameranın koyu modülleri açık olanlardan ayırt etmesine bağlıdır. Küçük modüller, düşük kontrast, yansıma, bulanıklık veya eksik sessiz bölge, daha fazla modülü şüpheye iter ve hata düzeltme yalnızca belli bir miktarı karşılayabilir. Veriyi kısa, kontrastı güçlü ve kenar boşluğunu temiz tutmak, çözücüye en kolay işi verir.