QR码分析
前段时间,我的二手黑莓终于寿终正寝了。对于我这种天天要面对无数告警短信的挨踢民工而言,没有手机是万万不能的,于是乎近期入手了一枚 Android 系统的手机(其实是两枚,其中细节不提也罢,多说伤心 )
以前我一直认为手机摄像头是个很鸡肋的东西,于是在选购二手黑莓的时候,我选择了一台没有摄像头的型号。然而近期二维码的慢慢流行,使得手机的摄像头又多了一个用处。拿到了新手机后,我立马对二维码了解了一下,发现二维码真是用于向移动设备传输数据的神器啊!
二维码,不同于常见的一维条形码,目前在大陆并不是很常见,但是仔细观察还是可以发现的,比如说火车票等等。
根据 wikipedia 的描述:
A QR Code is a specific matrix barcode (or two-dimensional code), readable by dedicated QR Barcode reader and camera phones. The code consists of black modules arranged in a square pattern on a white background. The information encoded can be text, URL or other data.
如上所说,二维码可以保存很多信息,在很多方面可以发挥作用,尤其是对于输入长文字和标点的移动设备而言,简直是个福音。
当你看到一段很赞的文字,想把它摘抄下来。如果提供了这段文字对应的 QR code 时,你就不需要把他打出来,而是像下面一样方便操作就行了。
注:左上角是用摄像头拍摄的 QR 图片当你在看书的时候,发现一个网址想用手机打开看看,如果书里面提供了包含该网址信息的 QR code 时,你就不需要再繁琐地输入网址,而是像下面一样方便操作就行了。
当你想用手机记录一个朋友的通讯录,如果你的朋友向你提供了包含通讯录的 QR code ,你就不再需要一个字一个字的输入通讯录,而像下图这么方便。
其实二维码方便的地方还有很多,这个只是九牛一毛而已。
通过调用 Google Chart Tools / Image Charts 的 API ,我们可以很方便的生成。
调用方式也很简单,只要向 http://chart.apis.google.com/chart 传入适合的参数就可以了,参数如下:
cht=qr
这个是必需的,告诉 API ,你需要生成的是二维码。chs=<width>x<height>
这个同样是必需的,告诉 API ,你需要生成的二维码的尺寸。chl=<data>
这个还是必需的,用来告诉 API 二维码所包含的信息。choe=<output_encoding>
终于来了个不是必须的,这个是用来声明生成的二维码所包含信息的编码,默认是 UTF-8 ;其他可选编码是 Shift_JIS 、 ISO-8859-1chld=<error_correction_level>|<margin>
可选参数:
error_correction_level 感觉用处不是很大,不再赘述,具体可以参见此处
margin 是指生成的二维码离图片边框的距离
我们可以按照上面的参数,先构造生成一个简单的二维码出来,如下:
http://chart.apis.google.com/chart?chs=100x100&cht=qr&chl=%E9%A3%8E%E4%BA%91%E9%98%81&choe=UTF-8
其中 %E9%A3%8E%E4%BA%91%E9%98%81 是“风云阁”经过 UrlEncode 后的编码,可以通过本站此处进行编码
此 URL 就可以生成上面第一张图片的二维码,用相关软件解码后即可以得到“风云阁”这个文本。
上面的图二中网络书签就可以通过
http://chart.apis.google.com/chart?chs=150x150&cht=qr&chl=URLTO:www.iron-feet.com&choe=UTF-8
来生成。
图三的名片同样不在话下,
http://chart.apis.google.com/chart?chs=500x500&cht=qr&chl=BEGIN:VCARD%0AVERSION:3.0%0AN:Bill;Wung%0AFN:Bill%20Wung%0AORG:%E5%8C%97%E4%BA%AC%E6%90%9C%E7%8B%97%E7%A7%91%E6%8A%80%E5%8F%91%E5%B1%95%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8%0ATITLE:%E5%8A%A9%E7%90%86%E7%A0%94%E7%A9%B6%E5%91%98%0APHOTO;VALUE=URL;TYPE=GIF:http://www.site.com/dir_photos/my_photo.gif%0AEMAIL;TYPE=PREF,INTERNET:iron_feet@hotmail.com%0AEND:VCARD&choe=UTF-8
可以生成你所需要的名片 QR 。
名片的格式相对而言比较复杂,采用的是 vCard 格式。
vCard is a file format standard for electronic business cards. vCards are often attached to e-mail messages, but can be exchanged in other ways, such as on the World Wide Web or Instant Messaging. They can contain name and address information, phone numbers, e-mail addresses, URLs, logos, photographs, and even audio clips.
比方说,图三的名片采用的是 vCard 3.0 的格式,如下:
BEGIN:VCARD
VERSION:3.0
N:Bill;Wung
FN:Bill Wung
ORG:北京搜狗科技发展有限公司
TITLE:助理研究员
PHOTO;VALUE=URL;TYPE=JPEG:http://www.gravatar.com/avatar/27026e1c60e2659f3350af30b78565b0?s=80
EMAIL;TYPE=PREF,INTERNET:iron_feet@hotmail.com
END:VCARD
可以看出, N 表示的是姓名, ORG 表示的是公司, TITLE 表示的是职位等等,当然还有很多可以加入名片的,如电话等等,具体可以参见此处
写入 chl 参数的时候,我们同样需要对这个名片进行一下预处理,首先中文是必须 UrlEncode 一下,同时换行需要用 %0A 替代。
其实 QR 的用途还远远不止上面我所提到的,它还可以用来记录短信、彩信、WIFI热点、 Android 市场 、日历约会、地理位置等等。
如果你有兴趣的话,可以到该页面深入研究
建议继续学习:
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:Iron_Feet 来源: 风云阁
- 标签: QR
- 发布时间:2011-09-25 13:58:13
- [3998] QR码分析
- [72] Twitter/微博客的学习摘要
- [66] IOS安全–浅谈关于IOS加固的几种方法
- [66] Go Reflect 性能
- [65] 如何拿下简短的域名
- [65] 【社会化设计】自我(self)部分――欢迎区
- [64] 读书笔记-壹百度:百度十年千倍的29条法则
- [64] 图书馆的世界纪录
- [64] Oracle MTS模式下 进程地址与会话信
- [63] 流程管理与用户研究