🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
我们用的是phpqrcode [请去我写的测试代码查看](https://www.thinkphp.cn/code/9153.html) ``` // 名片二维码 if($_POST["type"]=="qrlib"){ !empty($_POST['N'])? $N=$_POST['N']:$N=""; !empty($_POST['FN'])? $FN =$_POST['FN']:$FN =''; !empty($_POST['NICKNAME'])?$NICKNAME =$_POST['NICKNAME'] :$NICKNAME =''; !empty($_POST['PHOTO'])? $PHOTO=$_POST['PHOTO'] :$PHOTO =''; !empty($_POST['BDAY'])? $BDAY=$_POST['BDAY'] :$BDAY =''; !empty($_POST['TITLE'])?$TITLE=$_POST['TITLE'] :$TITLE =''; !empty($_POST['ROLE'])? $ROLE=$_POST['ROLE'] :$ROLE =''; !empty($_POST['ORG'])? $ORG=$_POST['ORG'] :$ORG =''; !empty($_POST['WORKTEL'])? $WORKTEL =$_POST['WORKTEL'] :$WORKTEL =''; !empty($_POST['HOMETEL'])? $HOMETEL=$_POST['HOMETEL'] :$HOMETEL =''; !empty($_POST['cellTEL'])?$cellTEL =$_POST['cellTEL'] :$cellTEL =''; !empty($_POST['HOMEADR'])? $HOMEADR=$_POST['HOMEADR'] :$HOMEADR =''; !empty($_POST['EMAIL'])? $EMAIL=$_POST['EMAIL'] :$EMAIL =''; !empty($_POST['URL'])?$URL=$_POST['URL'] :$URL =''; $zz=qrlib($N,$FN,$URL,$EMAIL,$HOMEADR,$WORKTEL,$HOMETEL,$cellTEL,$NICKNAME,$PHOTO,$BDAY,$TITLE,$ROLE,$ORG) ; } 普通二维码 if($_POST["type"]=="QRcodepng"){ //var_dump($_POST);die; empty($_POST["url"])?$url=$_POST["url"]:$url="http://un.jipinlantu.com"; $zz=QRcodepng($url) ; } echo $zz;die; function mk_dir($dir, $mode = 0755) { if(is_dir($dir)||@mkdir($dir,$mode)){ return true; } if(!mk_dir(dirname($dir),$mode)) { return false; } return @mkdir($dir,$mode); } /* 第1个参数$text:二维码包含的内容,可以是链接、文字、json字符串等等; 第2个参数$outfile:默认为false,不生成文件,只将二维码图片返回输出;否则需要给出存放生成二维码图片的文件名及路径; 第3个参数$level:默认为L,这个参数可传递的值分别是L(QR_ECLEVEL_L,7%)、M(QR_ECLEVEL_M,15%)、Q(QR_ECLEVEL_Q,25%)、H(QR_ECLEVEL_H,30%),这个参数控制二维码容错率,不同的参数表示二维码可被覆盖的区域百分比,也就是被覆盖的区域还能识别; 第4个参数$size:控制生成图片的大小,默认为4; 第5个参数$margin:控制生成二维码的空白区域大小; 第6个参数$saveandprint:保存二维码图片并显示出来,$outfile必须传递图片路径; */ //生成二维码名片 //生成图片 /*($N="姓氏", $FN="名字", $URL="个人主页", $EMAIL='邮箱', $HOMEADR="住址", $WORKTEL="工作电话", $HOMETEL="家庭电话", $cellTEL="移动电话", $NICKNAME=“昵称”, $PHOTO="头像", $BDAY="表示出生日期", $TITLE="工作位置,工作职能", $ROLE="公司职业", $ORG="组织名称" ) */ ``` ``` //生成名片二维码 function qrlib($N,$FN,$URL="",$EMAIL='',$HOMEADR="",$WORKTEL="",$HOMETEL="",$cellTEL="",$NICKNAME,$PHOTO="",$BDAY="",$TITLE="",$ROLE="",$ORG="") { include "phpqrcode/qrlib.php"; //拼接内容 $content = "BEGIN:VCARD" . "\n";//开始 $content .= "VERSION:2.1" . "\n";//版本 if(!empty($N)){ $content .= "N:".$N . "\n";//姓 } if(!empty($FN)){ $content .= "FN:".$FN . "\n";//名 } if(!empty($NICKNAME)){ $content .= "NICKNAME:".$NICKNAME . "\n";//别名 } if(!empty($PHOTO)){ $content .= "PHOTO:".$PHOTO . "\n";//图像信息 } /**/ if(!empty($BDAY)){ $content .= "BDAY: ".$BDAY . "\n";//表示出生日期 } if(!empty($TITLE)){ $content .= "TITLE:".$TITLE . "\n";//工作位置,工作职能 } if(!empty($ROLE)){ $content .= "ROLE:".$ROLE . "\n";//公司职业 } if(!empty($ORG)){ $content .= "ORG:" .$ORG. "\n";//组织名称 } if(!empty($WORKTEL)){ $content .= "TEL;WORK;VOICE:".$WORKTEL . "\n";//工作电话 } if(!empty($HOMETEL)){ $content .= "TEL;HOME;VOICE:".$HOMETEL . "\n";//家庭电话 } if(!empty($cellTEL)){ $content .= "TEL;TYPE=cell:".$cellTEL . "\n";//移动电话 } if(!empty($HOMEADR)){ $content .= "ADR;HOME:;;".$HOMEADR . "\n";//家庭住址 } if(!empty($EMAIL)){ $content .= "EMAIL:".$EMAIL . "\n";//邮箱 } if(!empty($URL)){ $content .= "URL:".$URL . "\n"; //个人主页 } $content .= "END:VCARD";//结束 //二维码图片保存地址 $save_path = "./qrcode/qrlib/".date("Ymd",time())."/"; mk_dir($save_path); $filename=$N.$FN."qrcode.png" ; //输出二维码 QRcode::png($content,$save_path.$filename, 'L', 4, 2); return $save_path.$filename; } //生成普通二维码 function QRcodepng($url="",$save_path="./qrcode/url/") { //生成图片 //引入类库 include('./phpqrcode/phpqrcode.php'); //二维码里面的链接地址 //二维码图片保存地址 $zz=date("Ymd",time()); mk_dir($save_path.$zz."/"); $zz=$save_path.$zz."/".time().".png"; QRcode::png($url, $zz, 'L', 4, 2); //后面两个参数控制二维码大小相关的,可自行调整 // 循环创建目录 return $zz; die; } //生成logo二维码 function QRcodepnglogo($logo = './t.png',$url="http://un.jipinlantu.com",$save_path="./qrcode/urllogo/") { //引入类库 include('phpqrcode/phpqrcode.php'); //二维码里面的链接地址 //二维码图片保存地址 $zz=date("Ymd",time()); mk_dir($save_path.$zz."/"); $zz=$save_path.$zz."/".str_replace("/","_",str_replace("://","_",trim($url))).".png"; QRcode::png($url, $zz, 'L', 4, 2); //后面两个参数控制二维码大小相关的,可自行调整 //logo图片 if($logo){ $QR = imagecreatefromstring(file_get_contents( $zz)); $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 / 5; $scale = $logo_width/$logo_qr_width; $logo_qr_height = $logo_height/$scale; $from_width = ($QR_width - $logo_qr_width) / 2;//重新组合图片并调整大小 imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,$logo_qr_height, $logo_width, $logo_height);//输出图片 imagepng($QR, $zz); } //首先生成普通二维码,然后添加上logo die; } //生成logo和背景图的二维码 function QRcodepnglogobg($bgImg = './xuanchuan.jpg',$logo = './t.png',$url="http://un.jipinlantu.com", $save_path="./qrcode/urlbgm/") { //引入类库 include('phpqrcode/phpqrcode.php'); //二维码里面的链接地址 //二维码图片保存地址 $zz=date("Ymd",time()); mk_dir($save_path.$zz."/"); $zz=$save_path.$zz."/".str_replace("/","_",str_replace("://","_",trim($url))).".png"; QRcode::png($url, $zz, 'L', 4, 2); //后面两个参数控制二维码大小相关的,可自行调整 //logo图片 if($logo){ $QR = imagecreatefromstring(file_get_contents($zz)); $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 / 5; $scale = $logo_width/$logo_qr_width; $logo_qr_height = $logo_height/$scale; $from_width = ($QR_width - $logo_qr_width) / 2;//重新组合图片并调整大小 imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,$logo_qr_height, $logo_width, $logo_height);//输出图片 imagepng($QR, $zz ); } //die; //添加背景图 $backgroupImg = imagecreatefromstring(file_get_contents($bgImg)); $newQR = imagecreatefromstring(file_get_contents($zz)); //获取新的尺寸 list($width, $height) = getimagesize($zz); $new_width = 200; $new_height = 200; //重新组合图片并调整大小 imagecopyresampled($backgroupImg,$newQR,260, 700, 0, 0,$new_width, $new_height, $width, $height);//输出图片 imagepng($backgroupImg,$zz); //现在生成的图片就是有logo 有背景的 } ```