采用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 }