PHP Semacode Encoder
A few days ago Gina Haeussge (aka. foosel) blogged about QR Codes which are currently used by the State Theater of Darmstadt to advertise their mobile services.
QR Codes and the similar Datamatrix are so called 2D barcodes. They are different from the traditional barcodes in that they store data in two dimensions and thus can hold much more information. The ones mentioned here can store up to 3kb of data.
As already said, there are two different patent free 2D standards in the wild1). The QR code which Gina talked about is very popular in Japan, Semacode is the second one and based on a US created standard called Datamatrix. Both codes have similar capabilities. Nokia seems to favor the Semacode one, while the Wikipedia related project Semapedia uses QR code (despite the name).
So what's so special about those codes? The cool thing is that you may already have a barcode reader for them. If your cell phone has a camera you most probably can use it to decode these codes. Nokia even preinstalls such a reader software on some of their newer phones. If you need such a software I can really recommend the Kaywa Reader. It's free but you need to register at their site2).
So these codes make it simple to transfer data to your mobile phone. This data could be an URL, a phone number or even a VCard. The afore mentioned Semapedia uses it to “link” real world places to Wikipedia articles for example.
The code is available from a git repository or you can just get the library directly. If you squash any bugs, please send a patch.
If you like to try it first, use the following form:
<html><form action=“http://www.splitbrain.org/_static/semacode/build.php” target=“_new”> <input type=“hidden” name=“type” value=“png” /> <input type=“hidden” name=“size” value=“250” /> <input type=“text” name=“text” value=“Your ASCII text” /> <input type=“submit” value=“Encode” /> </form></html>
One nice thing about those 2d barcodes is the built in error correction which makes the code still decodable when part of it are missing. This makes it possible to embed small graphics into the code (See smiley image to the right). Of course you shouldn't overdo it . It is also recommended to keep the stored data small, because the more data you store, the more complex the code gets and the harder it is to decode. I also found 2D barcodes better working on a white background, so if you have trouble decoding the codes in this blog entry, open the images in a separate window.
photo by akaalias