$qrurl = "http://chart.googleapis.com/chart?chs=$size&cht=qr&chl=$data&chld=L|1&choe=UTF-8";
在打开一个网站之后,我们要来实现归初的目的,扫描二维码,将企业信息导入通讯录,即在二维码中包含一个名片信息,其实二维码说白了就是将一堆信息转换为图片的形式表达,而这堆信息到底是什么样子的它并不关心,真正关心这些信息的是扫描二维码的工具,以上面的例子来说,当你用微信扫描二维码后,微信读取到二维码中储存的数据,然后尝试开始辨别它,当它发现内容是百度的网址时便使用浏览器打开它,同样的当它发现内容是一堆简单的文本数据时便以文本的形式来显示,同样的微信还可以辨别出二维码的内容是不是一个 vcard 格式的电子名片,我们的手机通讯录导入导出的时候大多是这种格式,所以我们可以直接在二维码中包含一个标准的 vcard 电子名片,这样就可以让扫描工具将它识别为通讯录。
//构建一个 vcard 格式数据
$vcard =
"BEGIN:VCARD".
"\nVERSION:3.0".
"\nFN:小编络络".
"\nTEL;CELL;VOICE:18858140621".
"\nTEL;WORK;VOICE:0358-2157466".
"\nEMAIL:luoluo@qq.com".
"\nURL:http://www.baidu.com".
"\nADR:浙江省杭州市滨江区".
"\nEND:VCARD";
//二维码信息,用urlencode编码
$data = urlencode($vcard);
//生成二维码尺寸
$size = '300x300';
//完整的API地址
$qrurl = "http://chart.googleapis.com/chart?chs=$size&cht=qr&chl=$data&chld=L|1&choe=UTF-8";
//获取二维码
$qrcode = file_get_contents($qrurl);
//输出图片
header('Content-type: image/png');
echo $qrcode;
复制代码
到此为止我们归初的目的已经基本实现,但实际使用中,由于直接将上述拼装好的 url 加到了 img 标签的 src 属性,结果出了点小问题,由于我们的名片信息比较多,导致了二维码生成错误,在本文开头已经用红色字体标出,get 方式最多只能传递 2K 大的数据,大于 2K 数据时我们需要使用 POST 请求,所以在实际使用中,可以先在程序中通过 POST 方式获取二维码并保存为本地图片,之后直接调用本地图片即可。
方法二:使用 PHP QR CODE 生成二维码
官方主页:http://phpqrcode.sourceforge.net
下载地址:http://sourceforge.net/projects/phpqrcode/
使用方法:QRcode::png($data, $filename , $errorCorrectionLevel, $matrixPointSize, $margin );
* $data 数据
* $filename 生成二维码保存路径,如果为 false 直接输出到浏览器
*$errorCorrectionLevel 错误处理级别 L、M、Q、H;同谷歌 API 中纠错级别
* $matrixPointSize 每个黑点的像素
* $margin 图片外围的白色边框像素
例三:扫描二维码打开网址(phpqrcode)
复制代码
// 包含 qrlib.php 或 phpqrcode.php
// 包含 qrlib.php 需要同其它文件放到一起; phpqrcode.php 是合并后版本,只需要包含这个文件,但生成的图片速度慢而且不太准确
include('./phpqrcode/qrlib.php');
// 二维码数据
$data = 'http://www.111cn.net';
// 纠错级别:L、M、Q、H
$errorCorrectionLevel = 'L';
// 点的大小:1到10
$matrixPointSize = 5;
QRcode::png($data, false, $errorCorrectionLevel, $matrixPointSize, 2);
复制代码
例二:生成一个名片二维码(phpqrcode)
复制代码
// 包含 qrlib.php 或 phpqrcode.php
include('./phpqrcode/qrlib.php');
// 构建 vcard 数据
$vcard =
"BEGIN:VCARD".
"\nVERSION:3.0".
"\nFN:王歌".
"\nTEL;CELL;VOICE:18858140621".
"\nTEL;WORK;VOICE:0358-2157466".
"\nEMAIL:wang@qq.com".
"\nURL:http://www.mailuow.com".
"\nADR:浙江省杭州市滨江区江虹路1750号".
"\nEND:VCARD";
// 纠错级别:L、M、Q、H
$errorCorrectionLevel = 'L';
// 点的大小:1到10
$matrixPointSize = 4;
QRcode::png($vcard, false, $errorCorrectionLevel, $matrixPointSize, 2);
http://www.bkjia.com/PHPjc/771403.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/771403.htmlTechArticle参数说明: cht=qr:必要参数,固定值qr,表明要生成二维码 chs=widthxheight:必要参数,生成二维码尺寸,单位是像素,目前生成的二维码都是...