thinkphp 使用phpqrcode生成帶logo二維碼 並生成海報
阿新 • • 發佈:2018-11-11
1-下載類庫
composer require aferrandini/phpqrcode -vvv
2-common的方法
//$text 文字的內容 //$logo logo圖片 function code($text,$logo){ //二維碼圖片儲存路徑 $pathname = APP_PATH . '/../Public/upload/'; if(!is_dir($pathname)) { //若目錄不存在則建立之 mkdir($pathname); } vendor("phpqrcode.phpqrcode"); //二維碼圖片儲存路徑(若不生成檔案則設定為false) $filename = $pathname . "/qrcode_" . time() . ".png"; //二維碼容錯率,預設L $level = "L"; //二維碼圖片每個黑點的畫素,預設4 $size = '10'; //二維碼邊框的間距,預設2 $padding = 2; //儲存二維碼圖片並顯示出來,$filename必須傳遞檔案路徑 $saveandprint = true; //生成二維碼圖片 \PHPQRCode\QRcode::png($text,$filename,$level,$size,$padding,$saveandprint); //二維碼logo $QR = imagecreatefromstring(file_get_contents($filename)); $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 / 5; $scale = $logo_width / $logo_qr_width; $logo_qr_height = $logo_height / $scale; $from_width = ($QR_width - $logo_qr_width) / 2; imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); imagepng($QR,$filename); return $filename; }
3--控制器
public function code(){ $logo=request()->file("file"); $pathImg=""; //移動檔案到框架應用更目錄的public/uploads/ $info = $logo->move(ROOT_PATH . 'public' . DS . 'upload' . DS . 'admin' . DS . date('Y') . DS . date('m-d'),md5(microtime(true))); if ($info) { $pathImg = "./public/upload/admin/" . date('Y') . '/' . date('m-d') . '/' . $info->getFilename(); } else { //錯誤提示使用者 return $this->error($logo->getError()); } $logo=$pathImg; //二維碼URL引數 $text = "http://www.baidu.com"; $filename=code($text,$logo); echo "<img src='$filename'>"; $image = \think\Image::open('./public/images/q.png'); // 給原圖居中新增透明度為100的水印並儲存到$a.png $a="./public/upload/11.jpg"; $image->water('./public/upload/qrcode_1536730572.png',\think \Image::WATER_CENTER,100)->save($a); }