Thinkphp 生成海报和小程序二维码
生活随笔
收集整理的這篇文章主要介紹了
Thinkphp 生成海报和小程序二维码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.獲取小程序二維碼
2.改變圖片大小
3.圖片改為圓圖
4.圖片去四角邊
5.生成海報
如果有幫到的可以點個贊
1.獲取小程序二維碼
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . config('AppID') . '&secret=' . config('AppleSecret');$res = file_get_contents($url);$token = json_decode($res, true)['access_token'];$URL = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' . $token;$data = ['scene' => $scene, //二維碼傳入參數'page' => $page_url, //掃碼后進入頁面];$json = json_encode($data); //數組加密 $result = api_notice_increment($URL, $json); //用CURL 進行POST請求$path = ROOT_PATH . 'public/upload/extend/qrcode/original'; //ROOT_PATH 我使用的是TP5框架if (!file_exists($path)) { //判斷目錄是否存在mkdir($path, 0777, true);}$path = $path . '/' . $file_name . '.png'; //最后要寫入的目錄及文件名if (!file_exists($path)) {// 創建將數據流文件寫入我們創建的文件內容中file_put_contents($path, $result);}header('Content-Type: image/jpeg');//返回小程序二維碼return request()->domain() . '/upload/extend/qrcode/original/' . $file_name . '.png';效果圖
2.改變圖片大小
//改變圖片大小$cover_url='/upload/picture/20211028/thumb/medium_2ee991169473f8bcc0748be2c6592c7a.jpg'$cover_image = \think\Image::open('./' . $cover_url);$cover_url = ROOT_PATH . 'public/upload/extend/qrcode/cover1/'; //生成新的文件if (!file_exists($cover_url)) { //判斷目錄是否存在mkdir($cover_url, 0777, true);}$cover_urls = $cover_url . $file_name . '.png'; //最后要寫入的目錄及文件名if (!file_exists($cover_urls)) {//參數1數字寬帶 參數2數字高度 $cover_image->thumb(340, 280, \think\Image::THUMB_CENTER)->save($cover_urls);}//獲取結果圖$h_result['result_cover_url'] = './upload/extend/qrcode/cover1/' . $file_name . '.png';?
3.圖片改為圓圖
//原圖 TP獲取當前域名$page_url = request()->domain() . '/upload/extend/qrcode/thumbnail/' . $file_name . '.png';$path = ROOT_PATH . 'public/upload/extend/qrcode/circular/'; //生成新文件存儲圖片$paths = $path . $file_name . '.png'; //最后要寫入的目錄及文件名if (!file_exists($path)) { //判斷目錄是否存在mkdir($path, 0777, true);}if (!file_exists($paths)) {$avatar = file_get_contents($page_url);$result = yuanImg($avatar);// 創建將數據流文件寫入我們創建的文件內容中file_put_contents($paths, $result);}return './upload/extend/qrcode/circular/' . $file_name . '.png';效果圖
?
3.圖片去四角邊
//目標圖路徑$result_cover_url = './upload/extend/qrcode/cover3/' . $file_name . '.png'; $circular_url = ROOT_PATH . 'public/upload/extend/qrcode/circular2/'; //目標位置if (!file_exists($circular_url)) { //判斷目錄是否存在mkdir($circular_url, 0777, true);}$result_circular_urls = $circular_url . $file_name . '.png'; //最后要寫入的目錄及文件名$radius = 15; $src_img = null;$src_img = imagecreatefromjpeg($result_cover_url );$wh = getimagesize($result_cover_url );$w = $wh[0];$h = $wh[1];$img = imagecreatetruecolor($w, $h);//這一句一定要有imagesavealpha($img, true);//拾取一個完全透明的顏色,最后一個參數127為全透明$bg = imagecolorallocatealpha($img, 255, 255, 255, 127);imagefill($img, 0, 0, $bg);$r = $radius; //圓 角半徑for ($x = 0; $x < $w; $x++) {for ($y = 0; $y < $h; $y++) {$rgbColor = imagecolorat($src_img, $x, $y);if (($x >= $radius && $x <= ($w - $radius)) || ($y >= $radius && $y <= ($h - $radius))) {//不在四角的范圍內,直接畫imagesetpixel($img, $x, $y, $rgbColor);} else {//在四角的范圍內選擇畫//上左$y_x = $r; //圓心X坐標$y_y = $r; //圓心Y坐標if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {imagesetpixel($img, $x, $y, $rgbColor);}//上右$y_x = $w - $r; //圓心X坐標$y_y = $r; //圓心Y坐標if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {imagesetpixel($img, $x, $y, $rgbColor);}//下左$y_x = $r; //圓心X坐標$y_y = $h - $r; //圓心Y坐標if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {imagesetpixel($img, $x, $y, $rgbColor);}//下右$y_x = $w - $r; //圓心X坐標$y_y = $h - $r; //圓心Y坐標if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {imagesetpixel($img, $x, $y, $rgbColor);}}} } imagepng($img, $result_circular_urls); imagedestroy($img); return './upload/extend/qrcode/circular3/' . $file_name . '.png';?效果圖
5.生成海報
//背景圖$share_img = ROOT_PATH . 'public/upload/extend/qrcode/graph/poster2.png';$image = \think\Image::open($share_img);//新圖地址$new_url = ROOT_PATH . 'public/upload/extend/qrcode/result2/'; //ROOT_PATH 我使用的是TP5框架if (!file_exists($new_url)) { //判斷目錄是否存在mkdir($new_url, 0777, true);}//查看文件是否存在$all_url = $new_url . $file_name . '.png'; //最后要寫入的目錄及文件名try {//水印$image->water($thumbnail_picture, [565, 1365])->save($all_url);//房間圖$image->water($h_result['result_cover_url'], [27, 680])->save($all_url);//字體,這個每臺電腦都有自己找找$font = ROOT_PATH . 'public/upload/size/SOURCEHANSANSSC.OTF';//項目$image->text($h_result['mall_department_has_one']['name'], $font, 28, '#ffffff', [64,1180], 0, 0)->save($all_url);//面積if(strlen($h_result['square']) == 1){$image->text($h_result['square'].'m2', $font, 30, '#ffffff', [338,1180], 0, 0)->save($all_url);}elseif(strlen($h_result['square']) == 2){$image->text($h_result['square'].'m2', $font, 30, '#ffffff', [328,1180], 0, 0)->save($all_url);}elseif (strlen($h_result['square']) == 3){$image->text($h_result['square'].'m2', $font, 30, '#ffffff', [315,1180], 0, 0)->save($all_url);}//金額$image->text('¥'.$h_result['price'], $font, 30, '#ffffff', [530,1180], 0, 0)->save($all_url); // //經紀人$image->text($s_result['name'], $font, 25, '#ffffff', [232,1360], 0, 0)->save($all_url);//聯系方式$image->text($s_result['phone'], $font, 24, '#ffffff', [232,1420], 0, 0)->save($all_url);} catch (\Exception $exception) {return false;}return request()->domain() . '/upload/extend/qrcode/result2/' . $file_name . '.png';效果圖
?
總結
以上是生活随笔為你收集整理的Thinkphp 生成海报和小程序二维码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++游戏谷歌小恐龙
- 下一篇: 回顾我的2018