首先引用phpqrcode类库php
下载phpqrcode类库函数
下载地址就不提供了,百度一搜一大把;
新建php文件用于建立二维码url
请注意看(每段中文后面都会有必定的代码示例) 好比:新建文件 qrcode.php 以后在文件中引入phpqrcode类库 代码演示 include('../phpqrcode/phpqrcode.php'); 然后就到了设置二维码的连接地址了 $url = 'http://www.baidu.com'; 接着设置二维码的容错级别,何为容错级别?通俗点就是容错级别百分比越高,就越容易识别,下面是三种容错级别: L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%); 按照效果排序依次是 H -> Q -> M -> L 因此,就直接用 H 代码示例: $errorCorrectionLevel = 'H';//容错级别 然后继续设置生成二维码图片的大小 $matrixPointSize = 7;//图片大小慢慢本身调整,只要是int就行 设置生成二维码的图片名称,博主用了5为随机数+时间戳生成文件名,为了防止文件名重复相互覆盖。。 QR = rand(10000,99999).time().".png"; 最后就到了生成二维码啦! 直接调用ORcode::png()就行,带上刚才设置好的参数。最后的这个参数*2*是表明白边的宽度。 QRcode::png($url, $QR, $errorCorrectionLevel, $matrixPointSize, 2);
若是你想在二维码中间放个LOGO那么你就继续看!code
首先,引用一张图片(you company LOGO) $logo = './images/logo.png'; 然后为了程序的完整性,简单的判断一下。也许某些童鞋不要LOGO的,注意看下面的代码,博主注释的都比较清楚的。
if ($logo !== FALSE) { $QR = imagecreatefromstring(file_get_contents($QR)); $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); }
最后直接输出图像便可排序
仍是老样子,咱们给图片来个名字;此次用6为随机数+时间戳 $QRM = rand(100000,999999).time().".png"; imagepng($QR, $QIMG); 然后输出图像 echo '<img src="'.$QIMG.'">';
整个带logo的二维码生成就完成了。若是还要拼合在其余图像上就继续接着看!(文章结尾有整个项目的代码,记得点赞!)图片
imagecopymerge函数制拼合(镶嵌,合并)图片 一样适合水印之类的get
首先仍是设置图片,底图和上面的覆盖图string
$dst_path = 'a.png';//底图 $src_path = $QIMG;//覆盖图,咱们就继续用上面的那张图QIMG
建立图片的实例it
$dst = imagecreatefromstring(file_get_contents($dst_path)); $src = imagecreatefromstring(file_get_contents($src_path));
获取覆盖图片的宽高io
list($src_w, $src_h) = getimagesize($src_path);
将图片复制到目标图片(底图)上,最后个参数是设置透明度(50为半透明,100为不透明,本身随意设置便可),这里实现不透明效果,两个20是控制图片坐标位置,本身慢慢调整
imagecopymerge($dst, $src, 20, 20, 0, 0, $src_w, $src_h, 100);
若是水印图片自己带透明色,则使用imagecopy方法
imagecopy($dst, $src, 10, 10, 0, 0, $src_w, $src_h);//博主的不是透明的,因此不用这段~用下面的
生成图片
list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path);
然后用switch判断一下图片的类型
switch ($dst_type) { case 1://GIF header('Content-Type: image/gif'); imagegif($dst); break; case 2://JPG header('Content-Type: image/jpeg'); imagejpeg($dst); break; case 3://PNG header('Content-Type: image/png'); imagepng($dst); break; default: break; }
最后将图片打印出来
imagedestroy($dst); imagedestroy($src);
整个程序的完整代码,伸手党们!记得点赞打赏收藏等等等等!
include('../phpqrcode/phpqrcode.php'); $url = 'http://www.baidu.com'; //二维码内容 $errorCorrectionLevel = 'H';//容错级别 $matrixPointSize = 7;//生成图片大小 //生成二维码图片 $QR = rand(10000,99999).time().".png"; QRcode::png($url, $QR, $errorCorrectionLevel, $matrixPointSize, 2); $logo = '../images/logo.png';//准备好的logo图片 //生成时间戳处理覆盖图片防止权限的存在 // $op = time(); // $QR = 'qrcode.png';//已经生成的原始二维码图 if ($logo !== FALSE) { $QR = imagecreatefromstring(file_get_contents($QR)); $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); } //输出图片 $QIMG = rand(100000,999999).time().".png"; imagepng($QR, $QIMG); $dst_path = 'a.png';//底图 $src_path = $QIMG;//覆盖图 //建立图片的实例 $dst = imagecreatefromstring(file_get_contents($dst_path)); $src = imagecreatefromstring(file_get_contents($src_path)); //获取覆盖图图片的宽高 list($src_w, $src_h) = getimagesize($src_path); //将覆盖图复制到目标图片上,最后个参数100是设置透明度(100是不透明),这里实现不透明效果,两个20是覆盖图坐标位置 imagecopymerge($dst, $src, 20, 20, 0, 0, $src_w, $src_h, 100); //若是覆盖图图片自己带透明色,则使用imagecopy方法 //imagecopy($dst, $src, 10, 10, 0, 0, $src_w, $src_h); //输出图片 list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path); switch ($dst_type) { case 1://GIF header('Content-Type: image/gif'); imagegif($dst); break; case 2://JPG header('Content-Type: image/jpeg'); imagejpeg($dst); break; case 3://PNG header('Content-Type: image/png'); imagepng($dst); break; default: break; } imagedestroy($dst); imagedestroy($src);
源代码理解不了的,请看上面的文章,我都写的比较清楚,代码里面也注释了~遇到问题解决不了请百度,实在不行就留言给博主,博主会第一时间回复你!
大功告成,博主要看巴萨打拉斯帕尔马斯了!希望我梅老板能再继续进逆天任意球!
okey bye see you!