phpqrcode生成二维码广告图

1.使用phpqrcode生成方便调用的二维码

引入php类库phpqrcode

1 require_once "phpqrcode.php";
2 $text = urldecode($_GET['url']);  //二维码链接内容
3 $outfile =    false;                //是否输出二维码        
4 $level = 'L';                     //容错级别: L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%)
5 $size = 9;                        //大小   
6 $margin = 1;                      //二维码周围边框空白区域间距值
7 $saveandprint =    false;            //是否保存二维码并显示           
8 
9 QRcode::png($text, $outfile, $level, $size, $margin, $saveandprint);//生成二维码图片 

关于QRcode:png方法的参数说明:

1 public static function png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false) 
2         {
3             $enc = QRencode::factory($level, $size, $margin);
4             return $enc->encodePNG($text, $outfile, $saveandprint=false);
5         }

1.参数$text,就是URL网址参数

2.第二个参数$outfile默认为否,不生成文件,只将二维码图片返回,否则需要给出存放生成二维码图片的路径,为否时返回的是二进制的图片流,生成在缓冲区,在页面输出的时候会从缓冲区送到浏览器,所以在代码中是使用log输出是不会记录在日志中的,也不需要使用echo进行内容输出。所以直接使用base64_encode(QRcode::png)是没有用的。

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必须传递图片路径。

调用方法:

 <img src="http://test.com?url=http://www.cnblogs.com/xcrh/"> 

2.生成带logo的二维码

 1 <?php
 2 require_once "phpqrcode.php";
 3 $text = urldecode($_GET['url']);  //内容
 4 //$outfile =    false;                //是否输出二维码
 5 $level = 'L';                     //容错级别: L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%)
 6 $size = 9;                        //大小
 7 $margin = 1;                      //二维码周围边框空白区域间距值
 8 //$saveandprint =    false;            //是否保存二维码并显示
 9 
10 QRcode::png($text, qrcode.png, $level, $size, $margin, 2);//生成二维码图片
11 
12 $logo = 'http://test.com/fxs_tmwq800x1130.jpg';//准备好的logo图片
13 $QR = 'qrcode.png';//已经生成的原始二维码图
14 
15 if ($logo !== FALSE) {
16     $QR = imagecreatefromstring(file_get_contents($QR));
17     $logo = imagecreatefromstring(file_get_contents($logo));
18     $QR_width = imagesx($QR);//二维码图片宽度
19     $QR_height = imagesy($QR);//二维码图片高度
20     $logo_width = imagesx($logo);//logo图片宽度
21     $logo_height = imagesy($logo);//logo图片高度
22     $logo_qr_width = $QR_width / 5;
23     $scale = $logo_width/$logo_qr_width;
24     $logo_qr_height = $logo_height/$scale;
25     $from_width = ($QR_width - $logo_qr_width) / 2;
26     //重新组合图片并调整大小
27     imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,
28         $logo_qr_height, $logo_width, $logo_height);
29 }
30 
31 //输出图片
32 //imagepng($QR, 'myxzy.png');
33 //echo '<img src="myxzy.png">';
34 
35 //输出图片
36 Header("Content-type: image/png");
37 ImagePng($QR);

以上会在目录中生成qrcode.png图片

3.生成带背景图的二维码广告图

其实和生成带logo的二维码图一样,我只是把logo图和二维码图的位置交换,然后调一下相关位置参数,这里我直接用的二维码图链接

 1 <?php
 2 $text = urldecode($_GET['url']);
 3 $pic = urldecode($_GET['pic']);
 4 $logo = 'http://test/qrcode?url='.$text;//已经生成的原始二维码图
 5 
 6 $QR = 'http://test/fxs_'.$pic.'800x1130.jpg';//准备好的背景图片
 7 
 8 if ($logo !== FALSE) {
 9    $QR = imagecreatefromstring(file_get_contents($QR));
10    $logo = imagecreatefromstring(file_get_contents($logo));
11    $QR_width = imagesx($QR);//背景图片宽度
12    $QR_height = imagesy($QR);//背景图片高度
13    $logo_width = imagesx($logo);//二维码图片宽度
14    $logo_height = imagesy($logo);//二维码图片高度
15    $logo_qr_width = $QR_width / 4.5;
16    $scale = $logo_width/$logo_qr_width;
17    $logo_qr_height = $logo_height/$scale;
18    $from_width = ($QR_width - $logo_qr_width) / 2;
19    //重新组合图片并调整大小
20    imagecopyresampled($QR, $logo, $from_width, $from_width+395, 0, 0, $logo_qr_width,
21        $logo_qr_height, $logo_width, $logo_height);
22 }
23 
24 //输出图片
25 Header("Content-type: image/png");
26 ImagePng($QR);
27 ?>

哈哈可以看到,我真的只是把$logo和$QR交换了位置

调用方法

 1 <img src="http://test.com?url=http://www.cnblogs.com/xcrh&pic=test">  

好好学习,天天向上,有错欢迎指正!

原文地址:https://www.cnblogs.com/xcrh/p/6142727.html