symfony中文手册|Symfony生成二维码的例子

时间:2019-11-19  来源:Symfony  阅读:


现在网上能搜到很多关于使用PHP生成二维码的例子,主要是两种方法:

第一种:google开放api,如下:

$urlToEncode="http://www.111cn.net";
generateQRfromGoogle($urlToEncode);
 
function generateQRfromGoogle($chl, $widhtHeight = "150", $EC_level = "L", $margin = "0")
{
    $url = urlencode($url);
    echo "QR code";
}
附:API接口地址 https://developers.google.com/chart/infographics/docs/qr_codes

 

第二种:使用PHP类库 PHP QR CODE

官方地址:http://phpqrcode.sourceforge.net/

下载地址:http://sourceforge.net/projects/phpqrcode/

使用方法:

 
// include这两个文件之一:
/*
qrlib.php for full version (also you have to provide all library files
form package plus cache dir)
 
OR phpqrcode.php for merged version (only one file,
but slower and less accurate code because disabled cache
and quicker masking configured)
*/
// 两句话解释:
// 包含qrlib.php的话需要同其它文件放到一起:文件、文件夹。
// phpqrcode.php是合并后版本,只需要包含这个文件,但生成的图片速度慢而且不太准确
 
include("./phpqrcode/phpqrcode.php");
 
// 以下给出两种用法:
 
// 创建一个二维码文件
QRcode::png("code data text", "filename.png");
// creates file
 
// 生成图片到浏览器
QRcode::png("some othertext 1234");
 
?>

 

那么实际应用中,我们会在二维码的中间加上自己的LOGO,已增强宣传效果。那如何生成含有logo的二维码呢?其实原理很简单,先使用PHP QR Code生成一张二维码图片,然后再利用php的image相关函数,将事先准备好的logo图片加入到刚生成的原始二维码图片中间,然后重新生成一张新的二维码图片。
 
include "phpqrcode.php"; 
$value = "http://www.helloweba.com"; //二维码内容
$errorCorrectionLevel = "L";//容错级别
$matrixPointSize = 6;//生成图片大小
//生成二维码图片
QRcode::png($value, "qrcode.png", $errorCorrectionLevel, $matrixPointSize, 2);
$logo = "logo.png";//准备好的logo图片
$QR = "qrcode.png";//已经生成的原始二维码图
 
if ($logo !== FALSE) {
    $QR = imagecreatefromstring(file_get_contents($QR));
    $logo = imagecreatefromstring(file_get_contents($logo));
    $QR_width = imagesx($QR);//二维码图片宽度
    $QR_height = imagesy($QR);//二维码图片高度
    $logo_width = imagesx($logo);//logo图片宽度
    $logo_height = imagesy($logo);//logo图片高度
    $logo_qr_width = $QR_width / 5;
    $scale = $logo_width/$logo_qr_width;
    $logo_qr_height = $logo_height/$scale;
    $from_width = ($QR_width - $logo_qr_width) / 2;
    //重新组合图片并调整大小
    imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, 
    $logo_qr_height, $logo_width, $logo_height);
}
//输出图片
imagepng($QR, "helloweba.png");
echo "";
由于二维码允许有一定的容错性,一般的二维码即使在遮住部分但仍然能够解码,经常我们扫描二维码的时候扫描到甚至不到一半时就能解码扫描结果,这是因为生成器会将部分信息重复表示来提高其容错度,这就是为什么我们在二维码中间加个LOGO图片并不影响解码结果的原因。


附官方示例代码地址:http://phpqrcode.sourceforge.net/examples/index.php
 

当然,还有其他方法生成二维码,这里就不一一介绍了。

下面我们说一下在Symfony下使用EndroidQrCodeBundle生成二维码:

1、使用composer安装

composer require endroid/qrcode-bundle

2、在kernel中注册

// app/AppKernel.php
 
public function registerBundles()
{
    $bundles = array(
        // ...
        new Endroid\Bundle\QrCodeBundle\EndroidQrCodeBundle(),
    );
}

3、定义访问路由

EndroidQrCodeBundle:
    resource:   "@EndroidQrCodeBundle/Controller/"
    type:       annotation
    prefix:     /qrcode

4、配置 config.xml

endroid_qr_code:
    size: 100
    padding: 10
    extension: gif
    error_correction_level: high
    foreground_color: { r: 0, g: 0, b: 0, a: 0 }
    background_color: { r: 255, g: 255, b: 255, a: 0 }
    #label: "My label"
    #labelFontSize: 16

5、在twig中使用

普通文本生成方式:




链接生成方式:

symfony中文手册|Symfony生成二维码的例子

http://m.bbyears.com/jiaocheng/80091.html

推荐访问:symfony2 symfony路由和界面 symfony2中文手册 symfony4 symfony3
相关阅读 猜你喜欢
本类排行 本类最新