目前使用的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的图片处理
}
感觉不错,可赞赏小主一元