目前比较流行的二维码的生成
最近比较流行二维码,自己百度了一下发现有一个很不错的实现方法使用谷歌接口http://chart.apis.google.com(gg的图标api接口)
QRcode是二维码的一种。QRcode可以存储最多4296个字母数字类型的任意文本。这些文本可以是任何内容,例如,网址、联系信息、电话号码(具体科查看二维码数据格式)。QR code存储的信息可以被安装有适当软件的光学设备读取。这种设备既可以是专用的QR code读取器也可以是手机。
参数解释
http://chart.apis.google.com/chart? : 调用 Google 图表 API
http://chart.apis.google.com/chart? : 调用 Google 图表 API
-
cht=qr
这个是必需的,告诉 API ,你需要生成的是二维码。 -
chs=<width>x<height>
这个同样是必需的,告诉 API ,你需要生成的二维码的尺寸。 -
chl=<data>
这个还是必需的,用来告诉 API 二维码所包含的信息。可以是数字、字符数字、字符、二进制信息、汉字。不能混合数据类型。数据必须经过UTF-8 URL-encoded。如果需要传递的信息超过2K个字节,请使用POST方式。 -
choe=<output_encoding>
终于来了个不是必须的,这个是用来声明生成的二维码所包含信息的编码,默认是 UTF-8 ;其他可选编码是 Shift_JIS 、 ISO-8859-1 -
chld=<error_correction_level>|<margin>
可选 纠错等级。QR码支持四个等级的纠错,用来恢复丢失的、读错的、模糊的、数据。下面是可选的值:L-(默认)可以识别已损失7%的数据;M-可以识别已损失15%的数据;Q-可以识别已损失25%的数据;H-可以识别已损失30%的数据。margin 是指生成的二维码离图片边框的距离。
QR码是方形的,有相同的长和宽。QR码的大小是固定的:从21到177的长/宽,每次递增4个像素点。每个配置被称为一个等级。长和宽越大,存储的信息就越多。下面是版本摘要:
- 等级为1的QR码长和宽分别为21个像素,最多可以存储25个字母数字和字符。
- 等级为2的QR码长和宽分别为25个像素,最多可以存储47个字母数字和字符。
- …以此类推 。
Chart API会根据你将存储的信息的大小来决定使用哪个等级的QR码。最棒的QR码阅读器可以读取等级为40的QR码中存储的信息。然而通常来说移动设备最多可以读取等级为4的QR码中存储的信息。
以下是一个简单的测试:
输入以下信息到IE地址栏:
http://chart.apis.google.com/chart?cht=qr&chs=100x100&chl=php淮北
就可以得到一个二维码:
下面使用php做成web版的
很贴心的是这个api支持get和post方式提交
关于VCard!!!相关介绍如下..
http://baike.baidu.com/view/495045.htm
<?php $vname = $_POST['name']; $vtel = $_POST['tel']; //判断有没有提交名片信息,要不要调用接口显示 if($vname&&$vtel){ $chl = "BEGIN:VCARD\nVERSION:3.0". //vcard头信息 "\nFN:$vname". "\nTEL:$vtel". "\nEND:VCARD"; //vcard尾信息 echo "<img src='http://chart.apis.google.com/chart?cht=qr&&chs=300×300&chl=".urlencode($chl)."' />"; //要对内容urlencode() } ?> <form method=‘POST’> 姓名:<input type='text' name='name' /><br/> 电话:<input type='text' name='tel' /><br/> <input type='submit' value='create QR'> </form>
需要注意的是,不要忘记文件要用utf-8编码,且声明META也是采用utf8,这是api的要求
<metahttp-equiv="content-type"content="text/html;charset=utf-8"/>