>php教程 >php手册 >利用google api生成二维码名片例子

利用google api生成二维码名片例子

WBOY
WBOY원래의
2016-05-25 16:45:131294검색

二维条码/二维码可以分为堆叠式/行排式二维条码和矩阵式二维条码,堆叠式/行排式二维条码形态上是由多行短截的一维条码堆叠而成,矩阵式二维条码以矩阵的形式组成,在矩阵相应元素位置上用"点"表示二进制"1",用"空"表示二进制"0","点"和"空"的排列组成代码.

堆叠式/行排式二维条码,如,Code 16K、Code 49、PDF417等.

矩阵式二维码,最流行莫过于QR CODE.

矩阵式二维码存储的数据量更大,可以包含数字、字符,及中文文本等混合内容,有一定的容错性(在部分损坏以后可以正常读取),空间利用率高等.

PHP实例代码如下:

<?php
$vname = &#39;test&#39;;
$vtel = &#39;13800000000&#39;;
generateQRfromGoogle($vname, $vtel);
function generateQRfromGoogle($vname, $vtel, $widhtHeight = &#39;150&#39;, $EC_level = &#39;L&#39;, $margin = &#39;0&#39;) {
    if ($vname && $vtel) {
        $chl = "BEGIN:VCARDnVERSION:3.0" . //vcard头信息
        "nFN:$vname" . "nTEL:$vtel" . "nEND:VCARD"; //vcard尾信息
        echo &#39;<img src="http://chart.apis.google.com/chart?chs=&#39; . $widhtHeight . &#39;x&#39; . $widhtHeight . &#39;&cht=qr&chld=&#39; . $EC_level . &#39;|&#39; . $margin . &#39;&chl=&#39; . urlencode($chl) . &#39;" alt="QR code" widhtHeight="&#39; . $size . &#39;" widhtHeight="&#39; . $size . &#39;"/>&#39;;
    }
}
?>

php生成网址二维码,代码如下:

<?php
$url = "http://www.google.com.hk";
generateQRfromGoogle($url);
function generateQRfromGoogle($chl, $widhtHeight = &#39;150&#39;, $EC_level = &#39;L&#39;, $margin = &#39;0&#39;) {
    echo &#39;<img src="http://chart.apis.google.com/chart?chs=&#39; . $widhtHeight . &#39;x&#39; . $widhtHeight . &#39;&cht=qr&chld=&#39; . $EC_level . &#39;|&#39; . $margin . &#39;&chl=&#39; . urlencode($chl) . &#39;" alt="QR code" widhtHeight="&#39; . $size . &#39;" widhtHeight="&#39; . $size . &#39;"/>&#39;;
}
?>

//例子代码如下: 

<?php
/*
 * php 生成二维码名片 
 * api Google 
 * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 
 * @param string $chl 二维码包含的信息,可以是数字、字符、二进制信息、汉字。不能混合数据类型,数据必须经过UTF-8 URL-encoded.如果需要传递的信息超过2K个字节,请使用POST方式 
 * @param int $widhtHeight 生成二维码的尺寸设置 
 * @param string $EC_level 可选纠错级别,QR码支持四个等级纠错,用来恢复丢失的、读错的、模糊的、数据。 
 *                         L-默认:可以识别已损失的7%的数据 
 *                         M-可以识别已损失15%的数据 
 *                         Q-可以识别已损失25%的数据 
 *                         H-可以识别已损失30%的数据 
 * @param int $margin 生成的二维码离图片边框的距离 
 * 二维码名片的格式---vcard 
 * 格式参考如下: 
  BEGIN:VCARD 
  VERSION:3.0 
  FN:用户名 
  TEL;CELL;VOICE:0571-00000000 
  TEL;WORK;VOICE:0571-00000000 
  TEL;WORK;FAX:0571-00000000 
  EMAIL;PREF;INTERNET:361way 
  URL:http://www.111cn.net 
  orG:361way运维之路 
  ROLE:研发部 
  TITLE:CTO 
  ADR;WORK;POSTAL:杭州市西湖区XXX号;310000 
  REV:2014-2-26T08:30:02Z 
  END:VCARD 
  如果你想更详细的定制所需要的格式,则需要详细的了解vcard的格式标准。 
*/
$vcard = array(
    &#39;vname&#39; => &#39;用户名&#39;,
    &#39;vtel&#39; => &#39;13800000000&#39;,
    &#39;vemail&#39; => &#39;aaaaa@163.com&#39;,
    &#39;vaddress&#39; => &#39;杭州市西湖区&#39;,
);
generateQRfromGoogle($vcard);

function generateQRfromGoogle($vcard, $widhtHeight = '150', $EC_level = 'L', $margin = '0') {

    if ($vcard) {

        $chl = "BEGIN:VCARDnVERSION:3.0" . //vcard头信息

        "nFN:" . $vcard['vname'] . "nTEL:" . $vcard['vtel'] . "nEMAIL:" . $vcard['vemail'] . "nADR:" . $vcard['vaddress'] . "nEND:VCARD"; //vcard尾信息

        echo 'QR code';

    }

}

?>

如果想实现中间有logo的效果,需要通过另外一个logo小图进行拼接即可,这里只提供一种实现方法,也可以通过QRcode的方式进行生成.

vcode的标准信息可以参看维基百科.

注:有些生成的图片经扫描没有的数据的原因是编码导致的,该问题在windows下较常见,由于很多编辑器默认提供的是ANSI编码,更改成utf8就OK了.


本文地址:

转载随意,但请附上文章地址:-)

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.