Ci, którzy mieli nieszczęście urodzić się w mniej ciekawych dekadach, pamiętają zapewne wciąż czasy, gdy przejawy supernowoczesnej technologii komputerowej rozpoznawało się po tym, że... były kanciaste, rozpikselowane i czarno-białe zazwyczaj. W późniejszych latach ów „matrixowy kod” krył się coraz bardziej pod powłokami kolejnych interfejsów, owocując tym, iż przeciętny użytkownik komputera, smartfona, czy komórki nie ma dziś nawet pojęcia o istnieniu wszystkich tych bitów i bajtów zawzięcie mielonych przez jego ulubione zabawki. Wiele wskazuje jednak na to, że będzie miał on niedługo szansę ponownie je sobie unaocznić dzięki fotokodom pojawiającym się w jego otoczeniu, na opakowaniach towarów, wizytówkach, w prasie, na plakatach, może nawet na murach naszych domów.
W zasadzie niczym odkrywczym ani wielce skomplikowanym. Zbiorem liczb w zapisie dwójkowym, wyrażonych w postaci jasnych oraz ciemnych pól i zebranych w tablicę, plaster miodu lub zespół koncentrycznych okręgów. Pierwsze pomysły na przedstawianie w tej postaci liczb wywodzą się jeszcze ze starożytnych Chin, gdzie znaleźć można mozaiki będące zapisem kolejnych liczb naturalnych, czy wróżebne heksagramy. Nie nadawały się jednak wówczas jeszcze do automatycznego odczytu, stanowiąc tylko matematyczną rozrywkę. Mechaniczny odczyt pojwił się się w XIX wieku wraz z perforowanymi kartami do krosen Josepha Jacquarda, jednak prawdziwi protoplasci kodów matrycowych powstają się dopiero po II wojnie światowej. Tym co wyróżnia matrycowy fotokod od wszystkich innych form cyfrowego zapisu informacji, jest bowiem łatwość wykonania i charakter jego zastosowań.
Fotokod ma być zapisem wykonywalnym technikami drukarskimi, tak by dało się go umieścić jako element zwykłego dokumentu, etykiety bądź opakowania. Jednocześnie zaś ma być łatwo czytelny dla komputerów, służąc automatyzacji i przyspieszeniu wprowadzania danych z nośników zasadniczo niekomputerowych: papierowych etykiet, faktur, specyfikacji itp.
Od ćwierćwiecza stykamy się ze, stosowanymi w taki właśnie sposób, kodami paskowymi, a historia podobnych rozwiązań jest nawet jeszcze starsza, bowiem już w roku 1959 zaprezentowano amerykańskim bankowcom specyficzną czcionkę E-13B, służącą zapisywaniu liczb na czekach. Dzięki tlenkom żelaza zawartym w tuszu oraz specjalnie opracowanemu krojowi cyfr możliwe było ich automatyczne odczytywanie. System ten został powszechnie zastosowany już w latach sześćdziesiątych.
Pewną ciekawostką jest fakt, iż dziesięć lat później, w czasach gdy nowoczesne było nadal wszystko to co kanciaste, font E-13B stał się pierwowzorem czcionki Data 70, którą to do dziś katują nas co jakiś czas miłośnicy „futurystycznego” designu.
Również pod tym względem koncepcja jest więc raczej mało nowatorska, mimo to 2D code posiada jednak sporo przewag względem swoich starszych i nowszych konkurentów.
Wprowadzając do użytku kod kreskowy dostosowano go do możliwości ówczesnej elektroniki. Płynne skanowanie i cyfrowa analiza zadrukowanej powierzchni pozostawała wówczas poza zasięgiem urządzeń powszechnego użytku. Kosztem takiego rozwiązania była jego niewielka pojemność ograniczona do kilku-kilkunastu cyfr. Dość by pomieścić numer ewidencyjny towaru, zbyt mało by zapisać choćby adres internetowy. Narzucającym rozwiązaniem jest tu po prostu wydłużenie zapisu, następnie zaś zawinięcie go w kilku liniach. Idąc dalej tym tropem, uzyskujemy format zapisu w którym pojedynczy bit kodowany jest nie linią, lecz punktem, optymalnie wykorzystując dostępną powierzchnię. Uzupełniając zapis o krzyżowe sumy kontrolne, czy mechanizmy kompresji uzyskujemy kod matrycowy z prawdziwego zdarzenia: łatwy w wydruku, pojemy, odporny na częściowe uszkodzenia.
Zasadniczo przy obecnym poziomie technologii możemy już sobie pozwolić na drukowanie wszelkich potrzebnych do zeskanowania informacji zwykłym, „otwartym” tekstem, tak by czytelne były również dla człowieka. Naturalnie, o ile nie przeszkadza nam kilku-kilkunastokrotnie większa powierzchnia zapisu, wyższy poziom przekłamań odczytu i kompletny brak odporności na uszkodzenia.
Metki odczytywane radiowo są obecnie jedyną poważną konkurencją dla kodów 2D. Ich najmniejsze, pasywne wersje są już na tyle poręczne, że można je umieszczać w charakterze zabezpieczeń w dokumentach i banknotach. W odróżnieniu od kodów optycznych możliwy jest też ich zdalny odczyt (co akurat stanowić może tak ich zaletę jak i wadę). Są one jednak ciągle droższe i trudniejsze do zintegrowania z dokumentem niż fragment zwykłego druku, zwłaszcza w przypadku domowych, czy biurowych drukarek. Ponadto mimo możliwości zdalnego odczytu, muszą się jednak fizycznie pojawić w pobliżu odbiornika. W odróżnieniu od fotokodów nie da się ich zatem zastosować np. na wielkoformatowym banerze ustawionym nad drogą, bądź na zdjęciach lub filmach prezentowanych w kinie, telewizji lub na ekranie komputera.
Kody dwuwymiarowe dzielą się na kody piętrowe i kody matrycowe, chociaż w niektórych przypadkach (np. PDF417) granica ta staje się nieco umowna. Poniższe tabele prezentują powszechniejsze, bądź bardziej orginalne rodzaje fotokodów.
nazwa | budowa | zapis |
Code49 | 2-8 wierszy | ASCII(0-127), do 49 znaków lub do 81 |
Code 16K | 2-16 wierszy | ASCII(0-255), do 77 znaków lub 154 cyfr |
GS1 DataBar | hybrydowy kreskowo-piętrowy | 14 cyfr + 41 znaków (ograniczony zbiór) lub 74 cyfry |
PDF417 | praktycznie matrycowy | ASCII(0-255), do 1108 znaków lub 2710 cyfr |
nazwa | budowa | zapis |
ShotCode | zapis w formie koncentrycznych kręgów „tarcza strzelecka” | zapisuje adresy internetowe |
MaxiCode | „plaster miodu”, po środku zbiór koncentrycznych kręgów | do 93 znaków lub do 138 cyfr |
QR Code | charakterystyczne punkty odniesienia umieszczone w trzech rogach | do 2953 bajtów, 4269 znaków, 7089 cyfr |
BeeTagg | „plaster miodu” w centralnej części można umieścić własne logo | koduje adresy internetowe |
Semacode | obramowanie w kształcie litery L | koduje adresy internetowe projektu semapedia |
Data Matrix | obramowanie w kształcie litery L | do 3116 znaków |
Aztec Code | centralnie umieszczony punkt odniesienia | do 1914 bajtów, do 3067 znaków, 3832 cyfr |
Najprostsze z wymienionych kody piętrowe nadają się jedynie do zapisywania nieco dłuższych identyfikatorów cyfrowych, bądź alfanumerycznych. W przypadku właściwych kodów matrycowych o możliwości jest już znacznie więcej.