Didactic
I am writing a little tutorial here for creating a QRCode for a vCard file. As I don’t use it that much, it feels like I need a memo for it.
Preparation
We will use a vCard file named test.vcf
which contains the following:
BEGIN:VCARD VERSION:2.1 N:Family Name;First Name;;; FN:First Name Family Name TITLE:Your job title EMAIL:emailaddress@example.com ADR;HOME:;;123, avenue des Champs-Élysées;Paris;Île-de-France;75008;France TEL;TYPE=cell:+33 123456789 URL:http://example.com END:VCARD
Result file
Generating the image
Prerequisites
qrencode
package with its dependencies.
Step by step
- In the Terminal, execute the following:
cat test.vcf | qrencode -o "test.vcf.png"
That’s all! A file named test.vcf.png
will be created or overwritten if it already exists.
If you want to change or get rid of the margin, use the -m
option with the size in pixels:
cat test.vcf | qrencode -o "test.vcf.png" -m 0
If you want to change the dots size, use the -s
option with the size in pixels:
cat test.vcf | qrencode -o "test.vcf.png" -s 4
Please check the manual if you need more options such as output format (PNG, EPS, SVG, ASCII, etc.).
Additional Notes
The same thing with an UI
You can also use frontends to generate QR encoded files: qtqr
package (available on Debian repository) seems interesting.
vCard syntax
- If you want to add or remove your own fields, my advice would be to check the properties on the Wikipédia page: https://en.wikipedia.org/wiki/VCard#Properties
- Make sure to use the right properties for the right vCard version. I am using 2.1 in my example.
Things to consider to prevent reading failures
- Make sure the color contrast between the dots and the background is sufficient.
- Dots should remain dark and the background should remain clear.
- Make sure the dots are large enough if you want devices with fixed focus (such as my Moto E 1st Gen) to read the image. For instance, the example image was generated with a 4px dot size; 3px dot size was not readable by my Moto E on a 22″ 1920×1080 screen.
- If you resize your image in a graphics software, it is best to use nearest neighbor interpolation algorithm to preserve sharp dots.
- If your dot size is 1px, don’t shrink your image as it will lose information. (pretty obvious)
- Make sure the QR code users will physically have access to the space right in front of the image / print. So don’t put a barrier in front of the image…