文章目录
前言
这里使用 simple-qrcode包生成二维码,我在Laravel框架中使用
github: https://github.com/SimpleSoftwareIO/simple-qrcode
安装 composer require simplesoftwareio/simple-qrcode “~2”
- ~2 代表安装v2版本
- ~3 需要安装 imagick 扩展
创建二维码
namespace App\Http\Controllers\Test;
use App\Http\Controllers\Core\CoreController;
use Illuminate\Http\Request;
use SimpleSoftwareIO\QrCode\Facades\QrCode;
/**
* Class IndexController
* @package App\Http\Controllers\Test
*/
class IndexController extends CoreController
{
public function index(Request $request)
{
/**
* format($format) 设置图片格式 $format:图片格式,默认svg
* size($pixels) 设置二维码大小 是正方形
* generate($text,$filename) 创建图片 $text:文本内容,$filename图片存储位置
* 注意:如果设置了$filename,那么$filename的文件后缀应该同$format 一致。否则生成错误的图片,导致无法展示|打开
*/
# 正确的用法 png 对应 .png后缀
QrCode::format('png')->size(200)->generate('https://github.com',public_path('image/qr_code.png'));
# 图片是svg格式却用png保存,生成的图片无法打开|展示
# QrCode::generate('https://github.com',public_path('image/qr_code.png'));
}
}
设置二维码中间的图像
namespace App\Http\Controllers\Test;
use App\Http\Controllers\Core\CoreController;
use Illuminate\Http\Request;
use SimpleSoftwareIO\QrCode\Facades\QrCode;
/**
* Class IndexController
* @package App\Http\Controllers\Test
*/
class IndexController extends CoreController
{
public function index(Request $request)
{
/**
* merge($filepath,$percentage,$absolute = false) 设置二维码中间的图片
* $filepath 图片路径
* $percentage 中间占二维码的百分比
* $absolute 是否是绝对路径,为false时且base_path() 函数存在时,加载的真实路径是:base_path().$filepath
*/
/**
* mergeString($content,$percentage) 设置二维码中间图片
* $content 图片内容
* $percentage 间占二维码的百分比
* merge 等价于 mergeString 两种方法都能设置中间的图片
*/
// $byte = QrCode::format('png')->size(520)->merge('/public/image/avatar.png',0.2,false)->generate('https://github.com');
$byte = QrCode::format('png')->size(520)->mergeString(file_get_contents(public_path('image/avatar.png')), 0.1)->generate('https://github.com');
return response()->make($byte)->header('content-type', 'image/png');
}
}