使用endroid/qrcode生成二维码

        最近做项目要生成二维码让用户做跳转,搜索了一下发现网上都是用一个叫做 phpqrcode 的扩展,在 github 上搜索了一下发现这个项目作者在6年前就已经没有维护了,百度的文章也是千篇一律的你复制我的我复制你的,所以只好在 github 上看看有没有更好的关于 PHP 生成二维码的扩展,之后找到了一个项目名称为 qr-code 的扩展,感觉不错,作者也一直在做维护,使用也是简单方便。所以在这里把这个扩展的安装使用说明一下,方便各位的开发。

        qr-code 项目的github 地址为:qr-code


        安装 qr-code

$ composer require endroid/qr-code

        冷暖自知一抹茶ck

        当扩展安装完毕后,我们就可以开始下面的操作了。


        生成二维码

        using the builder--使用builder生成器

<?php
require 'vendor/autoload.php';
use Endroid\QrCode\Builder\Builder;
use Endroid\QrCode\Encoding\Encoding;
use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelHigh;
use Endroid\QrCode\Label\Alignment\LabelAlignmentCenter;
use Endroid\QrCode\Label\Font\NotoSans;
use Endroid\QrCode\RoundBlockSizeMode\RoundBlockSizeModeMargin;
use Endroid\QrCode\Writer\PngWriter;

$result = Builder::create()
    ->writer(new PngWriter())
    ->writerOptions([])
    ->data('Custom QR code contents')
    ->encoding(new Encoding('UTF-8'))
    ->errorCorrectionLevel(new ErrorCorrectionLevelHigh())
    ->size(300)
    ->margin(10)
    ->roundBlockSizeMode(new RoundBlockSizeModeMargin())
    // ->logoPath(__DIR__.'/assets/symfony.jpg')
    ->labelText('This is the label')
    ->labelFont(new NotoSans(20))
    ->labelAlignment(new LabelAlignmentCenter())
    ->build();

// 直接输出二维码
//header('Content-Type: '.$result->getMimeType());
//echo $result->getString();

//保存到一个文件
$result->saveToFile(__DIR__.'/qrcode.png');

//生成一个数据URI包含内联图像数据(即在一个< img >标记)
//$dataUri = $result->getDataUri();

        without using the builder--不适用builder生成器

<?php
require 'vendor/autoload.php';
use Endroid\QrCode\Color\Color;
use Endroid\QrCode\Encoding\Encoding;
use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelLow;
use Endroid\QrCode\QrCode;
use Endroid\QrCode\Label\Label;
use Endroid\QrCode\Logo\Logo;
use Endroid\QrCode\RoundBlockSizeMode\RoundBlockSizeModeMargin;
use Endroid\QrCode\Writer\PngWriter;

$writer = new PngWriter();

// Create QR code
$qrCode = QrCode::create('Data')
    ->setEncoding(new Encoding('UTF-8'))
    ->setErrorCorrectionLevel(new ErrorCorrectionLevelLow())
    ->setSize(300)
    ->setMargin(10)
    ->setRoundBlockSizeMode(new RoundBlockSizeModeMargin())
    ->setForegroundColor(new Color(0, 0, 0))
    ->setBackgroundColor(new Color(255, 255, 255));

// Create generic logo
$logo = Logo::create(__DIR__.'/assets/symfony.jpg')
    ->setResizeToWidth(50);

// Create generic label
$label = Label::create('Label')
    ->setTextColor(new Color(255, 0, 0));

$result = $writer->write($qrCode, $logo, $label);

// Save it to a file
$result->saveToFile(__DIR__.'/qrcode.png');

        冷暖自知一抹茶ck


附:

        使用jquery.qrcode.js插件生成二维码QRCode

冷暖自知一抹茶ck
请先登录后发表评论
  • 最新评论
  • 总共0条评论