Loader::import('phpqrcode.phpqrcode',VENDOR_PATH);//導(dǎo)入qrcode類 $level=3; $size=4; $errorCorrectionLevel =intval($level) ;//容錯(cuò)級(jí)別 $matrixPointSize = intval($size);//生成圖片大小 $data = [$meeting_id.',3,'.$openid]; $value = json_encode($data); $object = new \QRcode(); $filename = time().rand(10,99).'.png'; $filepath = 'static/uploads/qrcode/'.$filename; $object::png($value, $filepath, $level = QR_ECLEVEL_L, $size = 3, $margin = 4,$saveandprint=false); //生成的二維碼 既logo圖片 //說明:如果要把生成的二維碼保存到某位置,,最后一個(gè)參數(shù)必要要有,。 $logo =$filepath;//準(zhǔn)備好的logo圖片 $QR = $yimg;//原圖像 if ($logo !== FALSE) { $QR = imagecreatefromstring(file_get_contents($QR));//讀取原圖像 $logo = imagecreatefromstring(file_get_contents($logo));//讀取二維碼圖像 $QR_width = imagesx($QR);//原圖像寬度 $QR_height = imagesy($QR);//原圖像高度 $logo_width = imagesx($logo);//二維碼圖片寬度 $logo_height = imagesy($logo);//二維碼圖片高度 $logo_qr_width = $QR_width / 4; //二維碼的寬度 $scale = $logo_width/$logo_qr_width; //比例 $logo_qr_height = $logo_height/$scale; //二維碼高度 $from_width = ($QR_width - $logo_qr_width) / 2; //距離左邊距的寬度 $from_height = ($QR_height - 300); //距離左邊距的寬度 //重新組合圖片并調(diào)整大小 imagecopyresampled($QR, $logo, $from_width, $from_height, 0, 0, $logo_qr_width,$logo_qr_height, $logo_width, $logo_height); } //輸出圖片 $lasefilename = time().rand(100,999).'.png';//原圖 imagepng($QR, 'static/uploads/qrcode/'.$lasefilename); unlink($filepath);//刪除原圖片 //將微信頭像與其合成圖片 $headlogo = time().rand(100,999).'.png';//logo $image = file_get_contents($user_img); //獲取微信頭像 file_put_contents('static/uploads/qrcode/'.$headlogo, $image);//微信頭像生成圖片 $yheadlogo = 'static/uploads/qrcode/'.$headlogo; //將頭像處理成圓形 $ename=getimagesize($yheadlogo); $ename=explode('/',$ename['mime']); $ext=$ename[1]; $src_img = null; switch ($ext) { case 'jpg': $src_img = imagecreatefromjpeg($yheadlogo); break; case 'jpeg': $src_img = imagecreatefromjpeg($yheadlogo); break; case 'png': $src_img = imagecreatefrompng($yheadlogo); break; } $wh = getimagesize($yheadlogo); $w = $wh[0]; $h = $wh[1]; $w = min($w, $h); $h = $w; $img = imagecreatetruecolor($w, $h); //這一句一定要有 imagesavealpha($img, true); //拾取一個(gè)完全透明的顏色,最后一個(gè)參數(shù)127為全透明 $bg = imagecolorallocatealpha($img, 255, 255, 255, 127); imagefill($img, 0, 0, $bg); $r = $w / 2; //圓半徑 $y_x = $r; //圓心X坐標(biāo) $y_y = $r; //圓心Y坐標(biāo) for ($x = 0; $x < $w; $x++) { for ($y = 0; $y < $h; $y++) { $rgbColor = imagecolorat($src_img, $x, $y); if (((($x - $r) * ($x - $r) + ($y - $r) * ($y - $r)) < ($r * $r))) { imagesetpixel($img, $x, $y, $rgbColor); } } } $finalhead = time().rand(100,999).'.png';//logo imagepng($img, 'static/uploads/qrcode/'.$finalhead); //刪除原微信頭像 unlink($yheadlogo); $wxlogo = 'static/uploads/qrcode/'.$finalhead; $QR2 = 'static/uploads/qrcode/'.$lasefilename;//原圖 if ($wxlogo !== FALSE) { $QR2 = imagecreatefromstring(file_get_contents($QR2));//讀取原圖像 $wxlogo = imagecreatefromstring(file_get_contents($wxlogo));//讀取二維碼圖像 $QR2_width = imagesx($QR2);//原圖像寬度 $QR2_height = imagesy($QR2);//原圖像高度 $wxlogo_width = imagesx($wxlogo);//二維碼圖片寬度 $wxlogo_height = imagesy($wxlogo);//二維碼圖片高度 $wxlogo_qr_width = $QR2_width / 4; //二維碼的寬度 $scale1 = $wxlogo_width/$wxlogo_qr_width; //比例 $wxlogo_qr_height = $wxlogo_height/$scale1; //二維碼高度 $from1_width = ($QR2_width - $wxlogo_qr_width) / 2; //距離左邊距的寬度 $from1_height = ($QR2_height - 725); //距離上邊距的高度 //重新組合圖片并調(diào)整大小 imagecopyresampled($QR2, $wxlogo, $from1_width, $from1_height, 0, 0, $wxlogo_qr_width,$wxlogo_qr_height, $wxlogo_width, $wxlogo_height); } //輸出圖片 $finalimage = time().rand(10,99).'.png';//原圖 imagepng($QR2, 'static/uploads/qrcode/'.$finalimage); //刪除原拼裝的圖片 unlink('static/uploads/qrcode/'.$finalhead);//刪除處理過的微信頭像 unlink('static/uploads/qrcode/'.$lasefilename);//刪除瓶裝后的圖片 $file = 'static/uploads/qrcode/'.$finalimage; $fontfile = '../vendor/topthink/think-captcha/assets/zhttfs/1.ttf';//文本字體-微軟雅黑 $head = '邀請(qǐng)您參加';//頭部 $title = $meetinginfo['title']; $start_time = date('Y/m/d H:i:s',$meetinginfo['meeting_start']); $end_time = date('Y/m/d H:i:s',$meetinginfo['meeting_end']); $time = '時(shí)間: '.$start_time.'~'.$end_time; $address = '地址: '.$meetinginfo['province'].$meetinginfo['city'].$meetinginfo['country'].$meetinginfo['address']; //獲取圖片信息 $info = getimagesize($file); //獲取圖片擴(kuò)展名 $type = image_type_to_extension($info[2],false); //動(dòng)態(tài)的把圖片導(dǎo)入內(nèi)存中 $fun = "imagecreatefrom{$type}"; $image = $fun($file); //指定字體顏色 //指定字體內(nèi)容 //給圖片添加文字 $color = array(255,243,173,127);//最后一個(gè)參數(shù)是透明度,127是完全透明 $fontsize = 20; $col = imagecolorallocatealpha($image,$color[0],$color[1],$color[2],$color[3]); $hcolor = imagecolorallocate($image,255,243,173); // 文字顏色 imagettftext($image,20,0,270,620,$hcolor,$fontfile,$head);//寫入邀請(qǐng) imagettftext($image,20,0,180,660,$hcolor,$fontfile,$title);//寫入邀請(qǐng) imagettftext($image,16,0,80,700,$hcolor,$fontfile,$time);//寫入邀請(qǐng) imagettftext($image,16,0,80,740,$hcolor,$fontfile,$address);//寫入邀請(qǐng) //imagettftext參數(shù):第一個(gè)參數(shù)是字體大小,,第二個(gè)是旋轉(zhuǎn)角度,,第三個(gè)是橫坐標(biāo),第四個(gè)是縱坐標(biāo),。 $perferimg = time().rand(100,999).'.png'; imagepng($image, 'static/uploads/qrcode/'.$perferimg); unlink($file); |
|