marten / ijbotma-arduino

0 stars 0 forks source link

Kijken of we QR-codes kunnen renderen, kijken of we daar iets leuks mee kunnen #8

Open ttencate opened 8 years ago

ttencate commented 8 years ago

We kunnen een 20x16 bitmap laten zien (4x2 chars). Als de gap tussen twee characters 1 pixel groot is, past daarin een "M4" 17x17 Micro QR code. Maar grote pech: alle format info zit bij de M4 precies in het midden, onder de rij en kolom van blanco pixels (zie spec pagina 16).

Dus we moeten een M3 nemen en handig positioneren. Dat vernaggelt 5 codewords, en 2 bits van de format info (dat is niet erg, denk ik). De capaciteit van een M3 is 14/11 characters, bij L/M error correction respectievelijk.

Error recovery gaat op basis van 8-bit codewords, niet op basis van 5.5-bit characters. M3 heeft 17 codewords; bij L/M level error correction heb je een error correction van 2/4 codewords. Dus met M level hoeft maar één van de codewords toevallig goed te zijn, en dan zijn we binnen. 4 van de codewords missen 2 bits, 1 ervan mist 4 bits. We kunnen het toeval een handje helpen door de XOR mask handig te kiezen.

Kortom: het is op het randje. En aangezien de QR code geïnverteerd is (lichtblauw op donkerblauw) is het ook de vraag of alle lezers dit snappen (inversie is een latere toevoeging aan de spec).

Vraag aan jullie: kunnen we iets leuks doen met 11 characters? Op qr.net kun je voldoend korte URLs maken, zolang we de http:// weglaten. Een telefoonnummer zou ook passen (in numeric mode heb je zelfs meer capaciteit).

ISO spec