技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 其他 --> QR码分析

QR码分析

浏览:3756次  出处信息

前段时间,我的二手黑莓终于寿终正寝了。对于我这种天天要面对无数告警短信的挨踢民工而言,没有手机是万万不能的,于是乎近期入手了一枚 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.

如上所说,二维码可以保存很多信息,在很多方面可以发挥作用,尤其是对于输入长文字和标点的移动设备而言,简直是个福音。

  1. 当你看到一段很赞的文字,想把它摘抄下来。如果提供了这段文字对应的 QR code 时,你就不需要把他打出来,而是像下面一样方便操作就行了。
    "txt
    注:左上角是用摄像头拍摄的 QR 图片

  2. 当你在看书的时候,发现一个网址想用手机打开看看,如果书里面提供了包含该网址信息的 QR code 时,你就不需要再繁琐地输入网址,而是像下面一样方便操作就行了。
    "url

  3. 当你想用手机记录一个朋友的通讯录,如果你的朋友向你提供了包含通讯录的 QR code ,你就不再需要一个字一个字的输入通讯录,而像下图这么方便。
    "vcard

其实二维码方便的地方还有很多,这个只是九牛一毛而已。

通过调用 Google Chart Tools / Image Charts 的 API ,我们可以很方便的生成。

调用方式也很简单,只要向 http://chart.apis.google.com/chart 传入适合的参数就可以了,参数如下:

  1. cht=qr
    这个是必需的,告诉 API ,你需要生成的是二维码。

  2. chs=<width>x<height>
    这个同样是必需的,告诉 API ,你需要生成的二维码的尺寸。

  3. chl=<data>
    这个还是必需的,用来告诉 API 二维码所包含的信息。

  4. choe=<output_encoding>
    终于来了个不是必须的,这个是用来声明生成的二维码所包含信息的编码,默认是 UTF-8 ;其他可选编码是 Shift_JIS 、 ISO-8859-1

  5. chld=<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 市场 、日历约会、地理位置等等。

如果你有兴趣的话,可以到该页面深入研究

建议继续学习:

  1. QR二维码的攻击方法与防御    (阅读:3153)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1