首页 > 技术文章 > php生成带logo的二维码

wanghjun 2018-05-10 10:20 原文

采用php qrcode生成

注:生成带logo的二维码时是先生成一个二维码图片,然后将logo负责到二维码上面

 1 <?php
 2 // echo urlencode('http://u.sgamer.com/uc_server/data/avatar/000/00/00/01_avatar_small.jpg');die;
 3 error_reporting(0);
 4 include './phpqrcode/phpqrcode.php'; //phprcode路径地址.生成二维码插件
 5 $value = @$_GET['value'];//二维码内容
 6 if($value == '') exit('二维码内容不存在');
 7 $logo = @$_GET['logo'] ? @$_GET['logo'] : false;//logo
 8 //生成二维码的配置
 9 $errorCorrectionLevel = 'L';//容错级别 (L 7%) (M 15%) (Q 25%) (H 30%)
10 $matrixPointSize = 6;//生成图片大小 
11 $margin = 2; //控制生成二维码的空白区域大小
12 if($logo){
13     $QR = './code.png';//保存的文件地址
14 }else{
15     $logo = false;//准备好的logo图片 
16     $QR = false;//已经生成的原始二维码图 
17 }
18 //生成二维码图片 
19 QRcode::png(urldecode($value), $QR, $errorCorrectionLevel, $matrixPointSize, $margin);
20 if ($logo !== false) {  //是否有Logo图
21     $logo = urldecode($logo);
22     //对logo加白边
23     $w = 26; //logo白边的宽带
24     //源图对象
25     $src_image = imagecreatefromstring(file_get_contents($logo));
26     $src_width = imagesx($src_image);
27     $src_height = imagesy($src_image);
28     //添加白边
29     $final_image = imagecreatetruecolor($src_width+$w, $src_height+$w);
30     $color = imagecolorallocate($final_image, 255, 255, 255);
31     imagefill($final_image, 0, 0, $color);
32     $x = $w/2;
33     $y = $w/2;
34     imagecopy($final_image, $src_image, $x, $y, 0, 0, $src_width, $src_height);
35     $QR = imagecreatefromstring(file_get_contents($QR)); 
36     // $logo = imagecreatefromstring(file_get_contents($logo));
37     $logo = $final_image;
38     $QR_width = imagesx($QR);//二维码图片宽度 
39     $QR_height = imagesy($QR);//二维码图片高度 
40     $logo_width = imagesx($logo);//logo图片宽度 
41     $logo_height = imagesy($logo);//logo图片高度 
42     $logo_qr_width = $QR_width / 5; 
43     $scale = $logo_width/$logo_qr_width;
44     $logo_qr_height = $logo_height/$scale; 
45     $from_width = ($QR_width - $logo_qr_width) / 2; 
46     //重新组合图片并调整大小 
47     imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,$logo_qr_height, $logo_width, $logo_height);
48     //输出图片 
49     Header("Content-type: image/png");
50     ImagePng($QR); 
51 } 

 

推荐阅读