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">
好好学习,天天向上,有错欢迎指正!