天天看点

thinkphp5.1生成二维码并添加背景图 phpqrcode

1.在thinkphp5.1中安装phpqrcode

在github下载phpqrcode

https://github.com/t0k4rt/phpqrcode

并把phpqrcode解压到thinkphp目录的 extend/phpqrcode 中

2.使用

在common.php中使用

/**
 * 生成二维码
 * @param string $url 要生成的路径
 * @param int $code 生成图片的名称
 * @param string $urlImgBg 生成的背景图片
 * @param int $x 生成的 左到右的距离
 * @param int $y 生成的上到下的距离
 * @param string $level
 * @param int $size 生成二维码大小
 * @return string
 */
function qrcode($url='https://www.baidu.com',$code = 111, $urlImgBg = './uploads/code/MG293.png', $x = 6, $y = 1340, $level = 'L', $size = 6){
    // 导入Phpqrcode插件文件
    require_once EXTEND_PATH.'phpqrcode/phpqrcode.php';
    // 容错级别
    $errorCorrectionLevel = $level;
    // 生成图片大小
    $matrixPointSize = intval($size);
    // 生成二维码图片
    $object = new \QRcode();
    // 这个一定要加上,清除缓冲区
    ob_end_clean();
    // 第二个参数false的意思是不生成图片文件,如果你写上‘picture.png’则会在根目录下生成一个png格式的图片文件
    $path = './uploads/code/';
    $QR =$QRB = $path.$code.".png";
    $object::png($url, $QR, $errorCorrectionLevel, $matrixPointSize, 1);
    //添加背景图片合成
    $dst_path = $urlImgBg;//背景图片路径
    $src_path = $QR;//覆盖图
//        $src_path = $path.$user_id.".png";//覆盖图
    //创建图片的实例
    $dst = imagecreatefromstring(file_get_contents($dst_path));
    $src = imagecreatefromstring(file_get_contents($src_path));
    //获取覆盖图图片的宽高
    list($src_w, $src_h) = getimagesize($src_path);
    //将覆盖图复制到目标图片上,最后个参数100是设置透明度(100是不透明),这里实现不透明效果
    imagecopymerge($dst, $src, $x, $y, 0, 0, $src_w, $src_h, 100);    //位置可以自己调试
    //        @unlink($QIMG); //删除二维码与logo的合成图片
    @unlink($QRB);  //删除服务器上二维码图片
//    header("Content-type: image/png");
    imagepng($dst,'./uploads/code/'.$code.'.png');//根据需要生成相应的图片
//    imagejpeg($dst,'../uploads/user/'.$uid.'.jpg');
    imagedestroy($dst);
    imagedestroy($src);
    return '/uploads/code/'.$code.'.png';
}
           
php