php endroid/qr-cod 高版本 生成二维码

目前使用的endroid/qr-cod版本为:4.5
1:生成二维码直接返回给前端

/**
 * 生成二维码图片:url会直接跳转(url必须带有http,否则不会跳转;其他情况会生成带有参数的二维码)
 * @param $data
 * @param string $label  图片上可添加的其他文案
 * @param int $size
 * @param int $margin
 * @return string
 */
public static function generateQrCode($data, $label = '', $size = 300, $margin = 10)
{
    $qr = Builder::create()
        ->writer(new PngWriter())
        ->writerOptions([])
        ->data($data)
        ->encoding(new Encoding('UTF-8'))
        ->errorCorrectionLevel(new ErrorCorrectionLevelHigh())
        ->size($size)
        ->margin($margin)
        ->roundBlockSizeMode(new RoundBlockSizeModeMargin());
    if (!empty($label)) {
        $qr->labelText($label)
            ->labelFont(new NotoSans(20))
            ->labelAlignment(new LabelAlignmentCenter());
    }
    return $qr->build()->getDataUri();
}

2:生成二维码图片,并保存到指定路径,可跟进业务对保存到指定路径的图片进行其他处理


```php

```php
/**
 * @param $data
 * @param $path:要保存图片到某一个路径,路径可自定义一个有权限的路径
 * @param int $size
 * @param int $margin
 * @param string $label 
 * @return array|string|null
 * @author anxiaowen
 */
public static function savePath($data, $path, $label = '', $size = 300, $margin = 10)
{
    $qr = Builder::create()
        ->writer(new PngWriter())
        ->writerOptions([])
        ->data($data)
        ->encoding(new Encoding('UTF-8'))
        ->errorCorrectionLevel(new ErrorCorrectionLevelHigh())
        ->size($size)
        ->margin($margin)
        ->roundBlockSizeMode(new RoundBlockSizeModeMargin());
    if (!empty($label)) {
        $qr->labelText($label)
            ->labelFont(new NotoSans(20))
            ->labelAlignment(new LabelAlignmentCenter());
    }
    $result = $qr->build();
    $result->saveToFile($path);
    // todo 此时已生成图片在指定的路径;根据自身业务对  保存到 $path的图片处理
}

感觉不错,可赞赏小主一元

php endroid/qr-cod 高版本 生成二维码_第1张图片

你可能感兴趣的:(php工作,qr-code,php)