国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php實(shí)現(xiàn)生成帶二維碼圖片并強(qiáng)制下載功能

2024-05-05 00:02:30
字體:
供稿:網(wǎng)友

本文主要和大家分享php/46446.html">php生成帶二維碼圖片并強(qiáng)制下載實(shí)現(xiàn)代碼,希望能幫助到大家實(shí)現(xiàn)一個自己的二維碼。

/* 下載二維碼 */ public function 測試(){  // 接收傳遞的參數(shù)  $data['keys'] = [ 'b01id'=>trim(I('get.b01id')),       'b02id'=>trim(I('get.b02id')),       'b03id'=>trim(I('get.b03id')),       'brid'=>trim(I('get.brid')),       'unicon'=>trim(I('get.unicon'))];  if(empty($data['keys']['b01id'])) $this->error('商戶不存在',U('Seller/index'),3);  $res = D('Sellerbrcode')->download($data); //方法在下面  if(!is_array($res)) $this->error($res,U('Seller/index'),3);  if(!empty($res['error'])) $this->error($res['error'],U('Seller/seebrcode?'.$res['url']),3);  // 制作掃碼牌  $bgimg = imagecreatefromstring(file_get_contents($res['bgimg'])); // 拿到背景圖做畫布  import('Component/phpqrcode',APP_PATH,'.php');  // 引入二維碼生成類  // 如果有掃碼123二維碼,則生成掃碼123二維碼  if('' != $res['codea']){   /* 參數(shù)說明:    * 參數(shù)1:二維碼需要保持的值    * 參數(shù)2:false代表直接輸出,其他則是生成的文件名    * 參數(shù)3:糾錯級別:L、M、Q、H    * 參數(shù)4:點(diǎn)的大小,數(shù)值越大圖片越大    * */   /QRcode::png($res['codea'], $res['codeimg'], 'H', 18);   /* 使用圖片縮放方法   bool imagecopyresized($dst_im,$src_im,$dst_x,$dst_y,$src_x,$src_y,$dst_w,$dst_h,$src_w,$src_h)     dst_im 目標(biāo)圖像鏈接的資源。     src_im 源圖像鏈接的資源。     dst_x X坐標(biāo)的目的地。     dst_y y坐標(biāo)目的地。     src_x X坐標(biāo)的源點(diǎn)。     src_y y坐標(biāo)源點(diǎn)。     dst_w 目的地寬度。     dst_h 目標(biāo)高度。     src_w 源寬度。     src_h 源高度。    * */   $codeimg = imagecreatefromstring(file_get_contents($res['codeimg'])); // 拿到二維碼圖片   $bg_info = getimagesize($res['codeimg']);        // 得到原二維碼圖片的大小   imagecopyresized($bgimg,$codeimg,1520,550,0,70,700,666,$bg_info[0],$bg_info[1]-36);  }  // 如果存在銀聯(lián)云閃付二維碼,則生成銀聯(lián)云閃付二維碼圖片  if('' != $res['codeb']){   /QRcode::png($res['codeb'], $res['paycodeimg'], 'H', 18);   $codeimg = imagecreatefromstring(file_get_contents($res['paycodeimg']));// 拿到二維碼圖片   $bg_info = getimagesize($res['paycodeimg']);       // 得到原二維碼圖片的大小   imagecopyresized($bgimg,$codeimg,236,536,0,80,750,670,$bg_info[0],$bg_info[1]-80);  }  // 如果存在商戶推廣二維碼,則生成商戶推廣二維碼圖片  if('' != $res['codec']){   /QRcode::png($res['codec'], $res['bridimg'], 'H', 18);   $codeimg = imagecreatefromstring(file_get_contents($res['bridimg'])); // 拿到二維碼圖片   $bg_info = getimagesize($res['bridimg']);        // 得到原二維碼圖片的大小   imagecopyresized($bgimg,$codeimg,1375,1288,0,0,230,230,$bg_info[0],$bg_info[1]);  }  // 如果存在商戶名稱  if('' != $res['bName']){   // 為了讓文字居中,需要計算左偏移量   preg_match_all("/[0-9]{1}/",$res['bName'],$len1);     // 得到字符串中的字?jǐn)?shù)量   preg_match_all("/[a-zA-Z]{1}/",$res['bName'],$len2);    // 得到字符串中的字母數(shù)量   preg_match_all("/([/x{4e00}-/x{9fa5}]){1}/u",$res['bName'],$len3); // 得到字符串中的中文數(shù)量   $left = 610 - (count($len1[0]) * 16) - (count($len2[0]) * 15) - (count($len3[0]) * 28);   $res['filename'] .= '_' . $res['bName'];       // 追加二維碼名稱   $black = imagecolorallocate($bgimg, 0x20, 0x57, 0xa0);    // 字體顏色   imagefttext($bgimg, 42, 0, $left, 480, $black,'./Public/font/msyh.ttf',$res['bName']);  }  // 如果存在二維碼編號,則寫入二維碼編號  if('' != $res['brid']){   $black = imagecolorallocate($bgimg, 0x3e, 0x75, 0xc7);    //字體顏色   imagefttext($bgimg, 30, 0, 1720,1190, $black,'./Public/font/msyh.ttf',$res['brid']);  }  // 添加銀聯(lián)云閃付logo  $codeimg = imagecreatefromstring(file_get_contents($res['union']));  // 拿到二維碼圖片  $bg_info = getimagesize($res['union']);         // 得到原logo圖片的大小  imagecopyresized($bgimg,$codeimg,550,760,0,0,120,120*$bg_info[1]/$bg_info[0],$bg_info[0],$bg_info[1]);  // 添加添加掃碼123logo  $codeimg = imagecreatefromstring(file_get_contents($res['logo']));  // 拿到二維碼圖片  $bg_info = getimagesize($res['logo']);         // 得到原logo圖片的大小  imagecopyresized($bgimg,$codeimg,1805,770,0,0,120,120*$bg_info[1]/$bg_info[0],$bg_info[0],$bg_info[1]);  $res['filename'] .= '_' . date('Y-m-d',time()) . '.png';    // 追加二維碼名稱  header('Pragma: public'); // required  header('Expires: 0');  // no cache  header('Cache-Control: must-revalidate, post-check=0, pre-check=0');  header('Cache-Control: private',false);  header('Content-Type: application/force-download');  header('Content-Disposition: attachment; filename="'.$res['filename'].'"');  header('Content-Transfer-Encoding: binary');  header('Connection: close');  imagepng($bgimg); }/* 生成圖片前 拼接數(shù)據(jù) */public function download($data){$tool = D('Tool');// 得到公共類$mysql = M();$admin = I('session.admin');/* 拼接url,方便以下錯誤時,跳轉(zhuǎn)使用 */$show['url'] = 'b01id='.$data['keys']['b01id'];// 如果傳遞了用戶id,那么判斷該用戶是否屬于該商戶if($data['keys']['b03id'])$show['url'].= '&b03id='.$data['keys']['b03id'];// 如果傳遞了二維碼idif($data['keys']['b02id'])$show['url'].= '&b02id='.$data['keys']['b02id'];// 如果傳遞了銀聯(lián)云閃付if($data['keys']['unicon']) $show['url'].= '&unicon='.$data['keys']['unicon'];// 如果傳遞了推廣二維碼if($data['keys']['brid'])$show['url'].= '&brid='.$data['keys']['brid'];// 調(diào)用上部方法得到數(shù)據(jù)$data = $this->seebrcode($data,$tool,$mysql,$admin,false);if(!is_array($data)){ return ['error'=>$data,'url'=>$show['url']]; }/* 得到要展示的數(shù)據(jù)*/$show['bgimg']= './Public/img/qrcode/qrcode.png';// 背景圖片地址$show['logo']= './Public/img/qrcode/logo.png';// 掃碼123的logo地址$show['union'] = './Public/img/qrcode/unionPay.png';// 銀聯(lián)logo地址$show['codeimg']= './Public/img/qrcode/code.png';// 普通二維碼生成的保存地址$show['paycodeimg'] = './Public/img/qrcode/paycode.png';// 銀聯(lián)二維碼生成的保存地址$show['bridimg']= './Public/img/qrcode/brid.png';// 商戶推廣二維碼圖片的保存地址$show['filename']= '掃碼123收款二維碼';// 二維碼名稱// 掃碼123二維碼內(nèi)容$show['codea']= (!$data['keys']['b02id']) ? '' : isset($data['qrcode'][$data['keys']['b02id']]) ? $data['url1'].$data['qrcode'][$data['keys']['b02id']]['brCode'] : '';// 掃碼123二維碼編號$show['brid']= (!$data['keys']['b02id']) ? '' : isset($data['qrcode'][$data['keys']['b02id']]) ? 'NO.'.$data['keys']['b02id'] : '';// 銀聯(lián)二維碼$show['codeb']= (!$data['keys']['unicon']) ? '' : isset($data['qrcode'][$data['keys']['unicon']]) ? $data['qrcode'][$data['keys']['unicon']]['brCode'] : '';// 商戶推廣二維碼$show['codec']= (!$data['keys']['brid']) ? '' : isset($data['download'][$data['keys']['brid']]) ? $data['url2'].$data['download'][$data['keys']['brid']]['brCode'] : '';// 商戶名稱$show['bName']= empty($data['seller']['bShortName']) ? (empty($data['seller']['bName']) ? (empty($data['seller']['bCode']) ? $data['seller']['b01id'] : $data['seller']['bCode']) : $data['seller']['bName'] ) : $data['seller']['bShortName'];/* 如果存在舊圖片,則刪除舊圖片 */if(is_file($res['codeimg']))unlink($res['codeimg']);// 刪除舊的掃碼123二維碼圖片if(is_file($res['paycodeimg'])) unlink($res['paycodeimg']); // 刪除舊的銀聯(lián)云閃付二維碼圖片if(is_file($res['paycodeimg'])) unlink($res['paycodeimg']); // 刪除舊的商戶推廣二維碼圖片return $show;}

總結(jié)

以上所述是小編給大家介紹的php生成帶二維碼圖片并強(qiáng)制下載實(shí)現(xiàn)代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對VeVb武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 承德县| 山东省| 犍为县| 嘉荫县| 额敏县| 潜江市| 星座| 科技| 绥中县| 彰武县| 佛坪县| 通道| 秦安县| 桑日县| 扶绥县| 无棣县| 长春市| 堆龙德庆县| 通化市| 凌云县| 四平市| 昌乐县| 津市市| 阿拉善右旗| 汝州市| 华阴市| 山阳县| 濉溪县| 宁陵县| 靖西县| 准格尔旗| 邢台县| 灵丘县| 淮北市| 德格县| 五指山市| 湟中县| 贵阳市| 襄汾县| 霍邱县| 霞浦县|