目前比较流行的二维码的生成

  1. 云栖社区>
  2. 博客>
  3. 正文

目前比较流行的二维码的生成

y0umer 2011-08-29 18:59:00 浏览488
展开阅读全文

最近比较流行二维码,自己百度了一下发现有一个很不错的实现方法使用谷歌接口http://chart.apis.google.com(gg的图标api接口)

QRcode是二维码的一种。QRcode可以存储最多4296个字母数字类型的任意文本。这些文本可以是任何内容,例如,网址、联系信息、电话号码(具体科查看二维码数据格式)。QR code存储的信息可以被安装有适当软件的光学设备读取。这种设备既可以是专用的QR code读取器也可以是手机。

参数解释
http://chart.apis.google.com/chart? : 调用 Google 图表 API
  1. cht=qr
    这个是必需的,告诉 API ,你需要生成的是二维码。
  2. chs=<width>x<height>
    这个同样是必需的,告诉 API ,你需要生成的二维码的尺寸。
  3. chl=<data>
    这个还是必需的,用来告诉 API 二维码所包含的信息。可以是数字、字符数字、字符、二进制信息、汉字。不能混合数据类型。数据必须经过UTF-8 URL-encoded。如果需要传递的信息超过2K个字节,请使用POST方式。
  4. choe=<output_encoding>
    终于来了个不是必须的,这个是用来声明生成的二维码所包含信息的编码,默认是 UTF-8 ;其他可选编码是 Shift_JIS 、 ISO-8859-1
  5. 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"/>

看看效果:


网友评论

登录后评论
0/500
评论
y0umer
+ 关注