我们先下载 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;
}