Elke code hier is statisch. De inhoud is in het patroon zelf gecodeerd, de code is dus de gegevens. Er is geen omleiding via POLPROG, geen verkorte link, geen account en niets dat kan verlopen of worden uitgezet. Een code die je vandaag maakt leidt over tien jaar nog naar dezelfde inhoud, of deze site dan nog bestaat of niet.
Dat is het tegenovergestelde van een dynamische of trackende QR-code, die een link naar de server van iemand anders codeert en stopt met werken zodra die dienst sluit, zijn prijzen wijzigt of het domein verliest.
Wat hij kan coderen
Link, platte tekst, wifi-gegevens, een vCard-contact, e-mail, sms, telefoon, WhatsApp, geografische locatie en een agenda-afspraak. Elk type heeft een eigen formulier, en elk veld wordt gecontroleerd tegen het formaat waarin het wordt gecodeerd, zodat een wificode met wachtwoord en een contactkaart met naam er allebei goed gevormd uit komen.
De encoder
Een volledige ISO/IEC 18004-encoder, geschreven als module van deze site in plaats van binnengehaald als afhankelijkheid: de invoer opdelen in numerieke, alfanumerieke en byte-reeksen, de kleinste passende versie kiezen, de bitstroom bouwen, Reed-Solomon-correctie toevoegen, de gegevens in de zigzagloop plaatsen en tot slot alle acht maskers proberen en het masker met de laagste straf houden, precies zoals de norm voorschrijft. Een encoder schrijven is alleen te verdedigen als hij wordt gecontroleerd in plaats van geloofd, dus de voltooide matrices worden bit voor bit vergeleken met een volwassen referentie-implementatie, over elke modus, elk correctieniveau en een reeks versies, met daarbovenop een volledige decodeerronde.
Voordat je hem afdrukt
Een QR-code die op het scherm goed lijkt, kan op papier onleesbaar zijn, dus de generator beoordeelt het resultaat in plaats van het alleen te tekenen:
- Contrast tussen je twee kleuren, met een waarschuwing onder ongeveer 3:1, waar aflezen begint te falen.
- Omkering, want de meeste decoders verwachten donker op licht en sommige lezen het omgekeerde helemaal niet.
- Modulegrootte bij de gekozen exportgrootte, want een symbool kan dichter zijn dan de camera die het moet onderscheiden.
- Stille zone, de lichte rand waarmee de scanner vindt waar het symbool begint. De norm vraagt vier modules; daaronder waarschuwt hij, bij nul weigert hij.
- Logodekking, gemeten tegen het budget voor foutcorrectie in plaats van geschat.
De dekking groeit met het kwadraat van de breedte, en dat is het verrassende deel: een logo dat 30 procent zo breed is als de code bedekt er 9 procent van, en een half zo breed bedekt 25 procent. Een logo toevoegen verhoogt het correctieniveau automatisch, een logo boven de helft van het budget wordt gemeld en boven het hele budget geweigerd.
Waar hij draait
Volledig in je browser. De encoder, het voorbeeld, het samenstellen van het logo en de export naar PNG en SVG draaien lokaal, en achter deze pagina zit helemaal geen API-eindpunt, dus een wifisleutel, een privé telefoonnummer of een contactkaart kan nergens heen, ook niet per ongeluk. Een logo dat je toevoegt wordt met FileReader gelezen en nooit geüpload. Open het netwerkpaneel van je browser terwijl je de tool gebruikt en het blijft leeg.