PHP(swoole)生成二维码并添加网络图片做背景图,然后上传base64格式图片到七牛

PHP(swoole)生成二维码并添加网络图片做背景图,然后上传base64格式图片到七牛

第一次写博客,直接上代码,主要也是给自己记录一下

生成二维码、获取网络背景图片并合并

	$bg = '这里是网络图片地址'; // 邀请好友背景图

    $image_1 = imagecreatefrompng($bg);

    $value = 'https://yikan.cdhhtc.cn/#/login/login/reg?phone=13689610664'; //二维码内容
    $errorCorrectionLevel = 'L'; //容错级别
    $matrixPointSize = 4; //生成图片大小
    //生成二维码图片
    require_once DIR.'/vendor/phpqrcode/phpqrcode.php'; // 加载phpqrcode类

    ob_start();//开启缓冲区

    $qrcode = new \QRcode();

    $res = $qrcode::png($value,false,$errorCorrectionLevel,$matrixPointSize,2);

    $imageString = base64_encode(ob_get_contents());
    ob_end_clean();
    $res = "data:image/jpg;base64,".$imageString;
        
    $image_2 = imagecreatefrompng($res);

    imagecopymerge($image_1, $image_2, 10, 200, 0, 0, imagesx($image_2), imagesy($image_2), 100); // 合并图片

    ob_start (); // 开启缓冲区

    //$image_1是你自己创建的图片资源
    imagepng ($image_1);

    $image_data = ob_get_contents (); // 获取缓冲区内容

    ob_end_clean (); // 清除缓冲区

    //得到这个结果,可以直接用于前端的img标签显示
    $image_data_base64 = "data:image/png;base64,". base64_encode ($image_data);
    
    $upd='七牛信息的json字符串';

    $config=json_decode($upd,true); // 解析成数组

    $qiniu = new Qiniu($config); // 实例化七牛对象,并将配置内容数组传过去

    $upimg = $qiniu -> uploadPicBase64($image_data_base64); // 调用七牛上传base64方法

    $upimg = $config['domain'].'/'.$upimg; // 得到最终七牛地址

七牛文件关键方法:

/**
 * 上传base64位图片到七牛云
 * $image base64位图片流
 */
public function uploadPicBase64($image)
{
 	// 去除base64,
 	$num = strpos($image,',');
 	$image = substr($image, $num+1);
 	$str= isset($image)?$image:false;
   	
    //生成图片key
    $rand = rand(1111,9999);
    $now = time();
    $name = 'ycode_'.$now.$rand.'.png';
    $Key = base64_encode($name);

    $upToken = $this->uploadToken();

    if($str) {
        $qiniu = $this->phpCurlImg('https://upload.qiniu.com'."/putb64/-1/key/".$Key,$str,$upToken);
        //upload.qiniup.com 上传域名适用于华东空间。华北空间使用 upload-z1.qiniu.com,华南空间使用 upload-z2.qiniu.com,北美空间使用 upload-na0.qiniu.com。            

        $qiniuArr = json_decode($qiniu,true);

        if(!empty($qiniuArr['key'])&&$qiniuArr['key']==$name) {
            return $qiniuArr['key'];
        }
        else {
            return false;
        }
    }
    return false;
}

//七牛base64上传方法
public function phpCurlImg($remote_server,$post_string,$upToken) {
    $headers = array();
    $headers[] = 'Content-Type:application/octet-stream';
    $headers[] = 'Authorization:UpToken '.$upToken;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$remote_server);
    curl_setopt($ch, CURLOPT_HTTPHEADER ,$headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

参考文章:https://blog.csdn.net/qq_34415586/article/details/82840050
另一个合并图片的记不到了。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值