二维码研究

介绍

Three_QR_Code.pdf
RFC式的文档
二维码 编码原理简介
通俗易懂的编码细节介绍
QR碼 - 维基百科,自由的百科全书
QR Code Minimum SizeWhat Size Should A Printed QR Code Be?
关于可识别性的一些结论,该网站上有大量二维码研究相关的文章

二维码开发库

libqrencode
基础的c语言二维码编码库,很多语言基于它开发扩展,不包含生成png图的功能,如需生成png可参考这里
jquery-qrcode
使用javascript直接在客户端生成二维码,中文支持参见JS生成二维码,支持中文字符
php's qrencode extension
使用nginx的扩展性能会更好一点,参考后面nginx的相关扩展.
libdecodeqr
二维码解码库

二维码生成工具

qr-code-creator
linux下的GUI程序。
qrcode-terminal
linux终端下生成并展示二维码,是一个node.js模块,带命令行工具程序,方便使用,介绍文章:QR Code Terminal
python-qrcode
linux终端下生成并展示二维码,是一个python包,带命令行工具程序,方便使用。

nginx的相关扩展

基本的二维码

二维码个性化水印

nginx_http_image_filter加上 水印补丁 即可。

下面的是经过修改后的 nginx image filter 模块代码,加入居中的水印效果:

ngx_http_image_filter_module.c

编译

--with-debug --with-http_image_filter_module --add-module=/home/tangxinfa/Opensource/nginx-1.2.7/../ngx_http_qrcode_module/ --add-module=/home/tangxinfa/Opensource/nginx-1.2.7/../ngx_devel_kit/ --add-module=/home/tangxinfa/Opensource/nginx-1.2.7/../set-misc-nginx-module/ --add-module=/home/tangxinfa/Opensource/nginx-1.2.7/../echo-nginx-module/

配置

location ~ /qr {
    qrcode_fg_color FF0000;
    qrcode_bg_color FFFFFF;    
    qrcode_level 2;
    qrcode_hint 2;
    qrcode_size 120;
    qrcode_margin 2;
    qrcode_version 5;
    set_unescape_uri $txt $arg_txt;
    qrcode_txt $txt;
    qrcode_casesensitive 1; 
    qrcode_gen;  

    image_filter_watermark "/usr/share/pixmaps/gnome-word.png";
    image_filter_watermark_transparency 95; #0-100
    image_filter watermark;
}

访问

http://localhost:8080/qr?txt=hello
  • 显示效果:

hello_qr.png

二维码基础服务的一点思索

  • 必须建立在cdn的基础上
  • 用户只需按照约定将内容以及定制参数按照直观的方式编码成二维码图片链接即可

参考:https://developers.google.com/chart/infographics/docs/qr_codes