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