PHP生成二维码保存本地 - 孙立亚笔记

PHP生成二维码保存本地

使用如下
composer require bacon/bacon-qr-code
或者在composer.json里添加
"bacon/bacon-qr-code": "^2.0",

/**

 * 生成二维码
*/
public function myQrcode()
{
    $uid = $this->uid;
    $user = Db::name('member')->where('id', $uid)->find();
    if(!$user) {
        return self::returnMsg(201, '未找到当前会员信息');
    }
    if($user['status'] != 3) {
        return self::returnMsg(201, '你已被禁用');
    }

    $domain = get_sysconfig('xxl_imgdomain', 'base');
    $domain = rtrim($domain, '/');

    $qt_url = get_sysconfig('qt_url', 'base');
    $qt_url = rtrim($qt_url, '/');
    $url = $qt_url.'/#/pages/my/invitation-register/invitation-register?pid='.$uid;
    $md5_qturl = md5($qt_url);
    // 在短链系统上生成
    $dl_jkurl = get_sysconfig('dl_jkurl', 'base');
    $dl_jkurl = rtrim($dl_jkurl, '/');
    $cs = ['url' => $url];
    $res = curl($dl_jkurl.'/api/v1/shortlink/setLink', $cs, 'POST');
    $res = json_decode($res, true);

    if($res['code'] == 200 && isset($res['data']['info'])) {
        $url = $dl_jkurl.$res['data']['info'];
    }
    $name = root_path().'/public/qrcode/'.$md5_qturl.'_'.$uid.'.png';
    if(file_exists($name)) {
        // @unlink($name);
        $img = $domain.'/qrcode/qrcode_'.$uid.'.png';
        return self::returnMsg(200, 'success', $img);
    }

    $renderer = new \BaconQrCode\Renderer\ImageRenderer(
        new \BaconQrCode\Renderer\RendererStyle\RendererStyle(500),
        new \BaconQrCode\Renderer\Image\ImagickImageBackEnd()
    );
    $writer = new \BaconQrCode\Writer($renderer);

    $writer->writeFile($url, $name);
    $img = $domain.'/qrcode/'.$md5_qturl.'_'.$uid.'.png';

    // $img = file_get_contents($name); var_dump('<img src="'.$img.'">');die;
    // $img = base64_encode($img);
    // ob_end_clean();
    // ob_start();
    // echo  file_get_contents($name);
    // $img = ob_get_contents();

    // ob_end_clean();
    // $img = base64_encode($img);var_dump($img);die;
    return self::returnMsg(200, 'success', $img);
}

$renderer = new BaconQrCodeRendererImagePng();
$renderer->setHeight(256);
$renderer->setWidth(256);
$writer = new \BaconQrCode\Writer($renderer);
//输出到浏览器
header('content-type: image/png');
echo $writer->writeString('Hello World!');

添加新评论

电子邮件地址不会被公开,评论内容可能需要管理员审核后显示。