phpqrcode实战:生成二维码

187 阅读2分钟

我们先下载 phpqrcode
github.com/t0k4rt/phpq…

这里用的是原生,没有用框架

1、公共方法

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); 
}

2、生成普通二维码

 empty($_POST["url"])?$url=$_POST["url"]:$url="http://un.jipinlantu.com";\
 $save_path="./qrcode/url/";
   $zz=QRcodepng($url,$save_path) ;


//生成普通二维码 
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; 
}

3、生成带有logo的二维码

//带有logo二维码
 
	
   //var_dump($_POST);die;
   empty($_POST["url"])?$url=$_POST["url"]:$url="http://un.jipinlantu.com";
   $save_path="./qrcode/url/";
   $logo = './t.png';
   $zz=QRcodepnglogo($logo,$url,$save_path) ;
 
 echo $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;
}

4、生成带有背景和logo的二维码

//带有logo二维码
 
	
   //var_dump($_POST);die;
   empty($_POST["url"])?$url=$_POST["url"]:$url="http://un.jipinlantu.com";
   $save_path="./qrcode/url/";
   $logo = './t.png';
   $zz=QRcodepnglogobg($bgImg = './xuanchuan.jpg',$logo,$url,$save_path) ;
 
 echo $zz;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 有背景的

}
 

5、名片二维码

   !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)  ;
 

  

/*

第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;
}