失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > thinkphp用phpqrcode生成二维码(含中间带logo 临时二维码)或生成微信二维码海报的方法

thinkphp用phpqrcode生成二维码(含中间带logo 临时二维码)或生成微信二维码海报的方法

时间:2020-12-20 09:22:02

相关推荐

thinkphp用phpqrcode生成二维码(含中间带logo 临时二维码)或生成微信二维码海报的方法

前期准备:

1.phpqrcode类文件下载,下载地址:/projects/phpqrcode/

2.PHP环境必须开启支持GD2扩展库支持(一般情况下都是开启状态)

/**

*生成二维码图片(可生成带logo的二维码)**@paramstring$data二维码内容*示例数据:weixin://wxpay/bizpayurl?pr=0tELnh9*@paramstring$saveDir保存路径名(示例:Qrcode)*@paramstring$logo图片logo路径*示例数据:./Public/Default/logo.jpg*注意事项:1、前面记得带点(.);2、建议图片Logo正方形,且为jpg格式图片;3、图片大小建议为xx*xx**注意:一般用于生成带logo的二维码**@return*/publicfunctioncreateQrcode($data,$saveDir="Qrcode",$logo=""){$rootPath=C("IMAGE_ROOT_PATH");$path=$saveDir.'/'.date("Y-m-d").'/';$fileName=uniqid();if(!is_dir($rootPath.$path)){mkdir($rootPath.$path,0777,true);}$originalUrl=$path.$fileName.'.png';Vendor('phpqrcode.phpqrcode');$object=new\QRcode();$errorCorrectionLevel='L';//容错级别$matrixPointSize=20;//生成图片大小(这个值可以通过参数传进来判断)$object->png($data,$rootPath.$originalUrl,$errorCorrectionLevel,$matrixPointSize,2);//判断是否生成带logo的二维码if(file_exists($logo)){$QR=imagecreatefromstring(file_get_contents($rootPath.$originalUrl));//目标图象连接资源。$logo=imagecreatefromstring(file_get_contents($logo));//源图象连接资源。$QR_width=imagesx($QR);//二维码图片宽度$QR_height=imagesy($QR);//二维码图片高度$logo_width=imagesx($logo);//logo图片宽度$logo_height=imagesy($logo);//logo图片高度$logo_qr_width=$QR_width/4;//组合之后logo的宽度(占二维码的1/5)$scale=$logo_width/$logo_qr_width;//logo的宽度缩放比(本身宽度/组合后的宽度)$logo_qr_height=$logo_height/$scale;//组合之后logo的高度$from_width=($QR_width-$logo_qr_width)/2;//组合之后logo左上角所在坐标点//重新组合图片并调整大小//imagecopyresampled()将一幅图像(源图象)中的一块正方形区域拷贝到另一个图像中imagecopyresampled($QR,$logo,$from_width,$from_width,0,0,$logo_qr_width,$logo_qr_height,$logo_width,$logo_height);//输出图片imagepng($QR,$rootPath.$originalUrl);imagedestroy($QR);imagedestroy($logo);}$result['errcode']=0;$result['errmsg']='ok';$result['data']=$originalUrl;return$result;}/***生成临时二维码图片*这里返回的是base64进制图片*一般用于微信扫码支付二维码生成场景**@paramstring$data二维码内容*示例数据:或weixin://wxpay/bizpayurl?pr=0tELnh9**@return*/publicfunctioncreateTempQrcode($data){Vendor('phpqrcode.phpqrcode');$object=new\QRcode();$errorCorrectionLevel='L';//容错级别$matrixPointSize=5;//生成图片大小//打开缓冲区ob_start();//生成二维码图片$returnData=$object->png($data,false,$errorCorrectionLevel,$matrixPointSize,2);//这里就是把生成的图片流从缓冲区保存到内存对象上,使用base64_encode变成编码字符串,通过json返回给页面。$imageString=base64_encode(ob_get_contents());//关闭缓冲区ob_end_clean();$base64="data:image/png;base64,".$imageString;$result['errcode']=0;$result['errmsg']='ok';$result['data']=$base64;return$result;}

//生成海报把图片 $originalUrl 放到背景海报$timg1上$timg1='./timg.jpg';$timg= imagecreatefromstring(file_get_contents($timg1)); //目标图象连接资源。$originalUrl = imagecreatefromstring(file_get_contents($originalUrl)); //源图象连接资源。$QR_width1 = imagesx($timg); //背景海报图片宽度$QR_height1 = imagesy($timg); //背景海报图片高度$logo_width1 = imagesx($originalUrl); //logo图片宽度$logo_height1 = imagesy($originalUrl); //logo图片高度$logo_qr_width1 = $QR_width1/ 4; //组合之后logo的宽度(占二维码的1/5)$scale1 = $logo_width1/$logo_qr_width1; //logo的宽度缩放比(本身宽度/组合后的宽度)$logo_qr_height1 = $logo_height1/$scale1; //组合之后logo的高度$from_width1 = ($QR_width1 - $logo_qr_width1)/4 ; //组合之后logo左上角所在坐标点//重新组合图片并调整大小//imagecopyresampled() 将一幅图像(源图象)中的一块正方形区域拷贝到另一个图像中imagecopyresampled($timg, $originalUrl, $from_width1, $from_width1, 0, 0, $logo_qr_width1,$logo_qr_height1, $logo_width1, $logo_height1);//输出图片imagepng($timg,'./'.rand(1,100).'.jpg');//$pic='./'.rand(1,100).'.jpg';//'生成后的图片重命名地址'//imagepng($timg,$pic);

如果觉得《thinkphp用phpqrcode生成二维码(含中间带logo 临时二维码)或生成微信二维码海报的方法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。