PHP根據指定url生成二維碼圖片

一、composer安裝

http://packagist.p2hp.com/packages/codeitnowin/barcode

?

二、使用

調用generateQrCode()方法即可實現生成二維碼圖片并輸出下載給用戶

<?php
namespace manage\Test;use CodeItNow\BarcodeBundle\Utils\QrCode;
use common\extensions\Helper;
use yii\helpers\FileHelper;class TestService
{/*** 生成二維碼圖片* @return array* @throws \yii\base\Exception*/public function generateQrCode($uid = 400570){// 進行基礎定義$url = 'http://www.xiaobudiu.top?uid=' . $uid;//定義需要生成二維碼圖片的url$out_put_file_name = '小卜丟飯團子'.date('His');//定義生成的二維碼圖片名稱$tmp_path = \Yii::$app->basePath.'/runtime/tmp_file/';// 定義存儲臨時文件的臨時文件夾路徑// 判斷如果臨時文件夾不存在,則創建臨時文件夾(用于存儲生成的臨時二維碼圖片)$generate_res = $this->generateDir($tmp_path);if (!$generate_res) {return Helper::msg('0', '創建圖片臨時文件夾失敗');}// 根據url生成二維碼圖片base64 str$image_base64_str = $this->generateImgBase64Str($url);// 將base64轉圖片格式,并將圖片存儲到指定文件夾(返回值為圖片的絕對路徑)$file = $this->base64_to_img($image_base64_str, $tmp_path, 'admin_');if (!$file) {return Helper::msg('0', '生成二維碼圖片失敗');}// 設置請求頭header('Content-Disposition:attachment;filename='.$out_put_file_name.'.png');header('Content-Length:' . filesize($file));// 讀取文件并寫入到輸出緩沖readfile($file);// 為了節省本地資源,刪除臨時圖片(可選)unlink($file);}/*** 判斷目錄是否存在,如果不存在,則創建,存在則返回* @param $path* @return mixed* @throws \yii\base\Exception*/public static function generateDir($path){if (FileHelper::createDirectory($path, 0775, true)) {return $path;}return false;}/*** 根據url生成二維碼圖片base64 str*/public function generateImgBase64Str($url){$qr_code = new QrCode();$image_base64_str = $qr_code->setText($url)->setImageType(QrCode::IMAGE_TYPE_PNG)->generate();// 生成圖片base64 strreturn $image_base64_str;}/*** base64轉圖片格式,并將圖片存儲到指定文件夾*/public function base64_to_img($base64_str, $path, $prefix = null){if($base64_str != ''){$output_file_name = $prefix.time().rand(100,999).'.png';$path .= $output_file_name;$file_handle = fopen($path, "wb");fwrite($file_handle, base64_decode($base64_str));fclose($file_handle);return($path);}return false;}# -------------------------- 備注方法,給不使用yii的同學參考 -------------------------/*** yii框架中的創建文件夾方法,即上面調用的同名方法* @param $path* @param int $mode* @param bool $recursive* @return bool* @throws \yii\base\Exception*/public function createDirectory($path, $mode = 0775, $recursive = true){if (is_dir($path)) {return true;}$parentDir = dirname($path);// recurse if parent dir does not exist and we are not at the root of the file system.if ($recursive && !is_dir($parentDir) && $parentDir !== $path) {static::createDirectory($parentDir, $mode, true);}try {if (!mkdir($path, $mode)) {return false;}} catch (\Exception $e) {if (!is_dir($path)) {// throw new \yii\base\Exception("Failed to create directory \"$path\": " . $e->getMessage(), $e->getCode(), $e);throw new \Exception("Failed to create directory \"$path\": " . $e->getMessage(), $e->getCode(), $e);}}try {return chmod($path, $mode);} catch (\Exception $e) {// throw new \yii\base\Exception("Failed to change permissions for directory \"$path\": " . $e->getMessage(), $e->getCode(), $e);throw new \Exception("Failed to change permissions for directory \"$path\": " . $e->getMessage(), $e->getCode(), $e);}}
}

?

3、效果

瀏覽器直接進行下載:

打開下載的圖片,效果:

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282178.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282178.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282178.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CA 周記 - 派福利!通過 Azure 零成本進入 CUDA 編程

我們在配置深度學習環境的時候&#xff0c;除了安裝各種庫和框架外&#xff0c;如果需要 GPU 加速&#xff0c;還需要配置 CUDA 。那 CUDA 是什么 &#xff1f;它的作用是什么 &#xff1f;CUDA 編程介紹01什么是 CUDA&#xff1f;CUDA (Compute Unified Device Architecture) …

《視圖更新與關系數據庫理論》——2.1 關系和關系變量

本節書摘來自異步社區出版社《視圖更新與關系數據庫理論》一書中的第2章&#xff0c;第2.1節&#xff0c;作者&#xff1a;【美】C.J. Date&#xff08;達特&#xff09;&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 2.1 關系和關系變量 每一個關系都有一…

盜取手機敏感信息,Android 6.0之上兼容

盜取手機敏感信息&#xff0c;Android 6.0之上兼容 項目介紹 盜取信息包含&#xff1a; 手機中所有照片手機中所有視頻手機中所有通訊錄手機中所有短信手機中所有通話記錄手機中所有安裝應用兼容Android 6.0及之上版本動態權限申請工具開放效果展示 1.照片信息 MaterialBean{mL…

再記一次Memory Leak分析

性能是優化出來的&#xff0c;不管是在上生產前&#xff0c;還是在上生產后。大部分性能在性能測試階段就能發現問題&#xff0c;但也有一些性能問題&#xff0c;結合生產的環境&#xff0c;生產數據才能表現出來&#xff0c;成為一個顯著的瓶頸。這次是生成pdf造成的內存泄露&…

PHP格式化全國省市區列表

一、代碼部分 /*** 獲取全國省市區列表&#xff08;格式化后&#xff09;*/public function getRegionList(){$data CoreRegion::find()->select([national_code, region_name, parent_id, region_level])->asArray()->all();$data $this->assembleRegionData($…

《C語言開發從入門到精通》一2.4 技術解惑

本節書摘來自異步社區《C語言開發從入門到精通》一書中的第2章&#xff0c;第2.4節&#xff0c;作者王長青 , 韓海玲&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 2.4 技術解惑 2.4.1 安裝Visual Studio的幾個常見問題 Visual Studio 2010容量巨大&…

POM思想__首頁頁面元素查找、功能點實現進行封裝

一、代碼如下 package www.gui.huohu.pom;import java.util.concurrent.TimeUnit;import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.sele…

061_Apex 異常捕捉

Trigger 中的錯誤處理 在 Trigger 中&#xff0c;我們可以為進行操作的數據進行驗證&#xff0c;類似于驗證規則。如果遇到不符合條件的數據&#xff0c;可以通過 addError() 函數來將錯誤顯示給用戶&#xff0c;并記錄日志。 在如下代碼中&#xff0c;當一個“業務機會”對象被…

從 C# 崩潰異常 中研究 頁堆 布局

一&#xff1a;背景 1.講故事最近遇到一位朋友的程序崩潰&#xff0c;發現崩潰點在富編輯器 msftedit 上&#xff0c;這個不是重點&#xff0c;重點在于發現他已經開啟了 頁堆 &#xff0c;看樣子是做了最后的掙扎。0:000> !analyze -v EXCEPTION_RECORD: (.exr -1) Except…

Win10筆記本不顯示wifi列表

一、問題描述 1、連接有線網絡時&#xff0c;只顯示連接到的有線網絡&#xff0c;而不顯示wifi列表 2、不連接有線網絡時&#xff0c;同樣不顯示wifi列表 二、解決方案 1、Win R 打開運行&#xff0c;并輸入services.msc 2、回車確定&#xff0c;找到WLAN AutoConfig項&…

《游戲大師Chris Crawford談互動敘事》一22.1 互動敘事前途無量

本節書摘來異步社區《游戲大師Chris Crawford談互動敘事》一書中的第22章&#xff0c;第22.1節&#xff0c;作者&#xff1a; 【美】Chris Crawford譯者&#xff1a; 方舟 責編&#xff1a; 陳冀康&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 22.1 互動…

交換兩個局部變量Integer的值

反射是很強大的&#xff0c;誰說的final修飾的就不能改變&#xff0c; 通過反射獲取成員變量&#xff0c;之后可以取消訪問修飾符&#xff0c;也就是說private的也可以訪問&#xff0c; 在修改常量&#xff08;final修飾的&#xff09;&#xff0c;之后就可以對其做任何操作了 …

搭建WeApacheb網站服務器

本地yum源安裝mkdir /opt/dvd (先用mkdir去根下opt目錄下建一個名字叫dvd的目錄)mount /dev/sr0 /opt/dvd (用mount命令&#xff0c;掛載光盤設備&#xff08;/dev/sr0&#xff09;,將光盤掛載到剛剛建立的dvd目錄下&#xff08;/opt/dvd&#xff09;)寫yum源配置文件|-cd…

PHP的構成及生命周期

一、PHP開源源代碼下載地址&#xff1a; https://github.com/php/php-src.git 二、PHP的構成 1、目錄結構 2、目錄分析 &#xff08;1&#xff09;sapi目錄是PHP的應用接口層。 &#xff08;2&#xff09;main為php的主要代碼&#xff0c;主要是輸入/輸出、Web通信、PHP框架…

《Adobe After Effects CS6完全剖析》——動畫:最重要的是關系

本節書摘來自異步社區《Adobe After Effects CS6完全剖析》一書中的第2章&#xff0c;動畫&#xff1a;最重要的是關系&#xff0c;作者 【美】Mark Christiansen&#xff08;馬克克里斯琴森&#xff09;&#xff0c;譯者 苗玉敏&#xff0c;郭圣路&#xff0c;曹玉臣&#xff…

Oracle即將發布的全新Java垃圾收集器 ZGC

Java 11的特性集合已經確定&#xff0c;其中包含了一些非常棒的特性。新版本提供了一個全新的垃圾回收器ZGC&#xff0c;它由甲骨文開發&#xff0c;承諾在TB級別的堆上實現非常低的停頓時間。在本文中&#xff0c;我們將介紹甲骨文開發ZGC的動機、ZGC的技術概覽以及ZGC帶來的一…

如何獲取 OSS AccessKeyId、AccessKeySecret

開通阿里云oss&#xff1a;https://www.aliyun.com/product/oss 1、點擊概覽 — AccessKey 注&#xff1a;官方鏈接 2、出現下圖&#xff0c;選擇“開始使用子用戶Access Key” 3、填寫用戶名&#xff0c;并點擊確定 4、這時會給你的手機發送驗證碼確定是本人操作&#xff0c;…

【網絡爬蟲入門02】HTTP客戶端庫Requests的基本原理與基礎應用

【網絡爬蟲入門02】HTTP客戶端庫Requests的基本原理與基礎應用 廣東職業技術學院 歐浩源 2017-10-15 1、引言 實現網絡爬蟲的第一步就是要建立網絡連接并向服務器或網頁等網絡資源發起請求。urllib是目前最常用的做法&#xff0c;然而Requests會比urlib更加方便&#xff0c;能…

5分鐘內看懂機器學習和深度學習的區別

歡迎大家前往騰訊云社區&#xff0c;獲取更多騰訊海量技術實踐干貨哦~ 本文由liuxuewen 發表于云社區專欄 在本文中&#xff0c;我們將研究深度學習和機器學習之間的差異。我們將逐一了解它們&#xff0c;然后討論他們在各個方面的不同之處。除了深度學習和機器學習的比較外&am…

《零信任的基石:使用 SPIFFE 為基礎設施創建通用身份》翻譯電子書分享

國慶假期除了去浙江和安徽玩了一圈欣賞江南山水和徽派建筑之外&#xff0c;還抽空翻譯了一本電子書。本書譯自 Solving the Bottom Turtle — a SPIFFE Way to Establish Trust in Your Infrastructure via Universal Identity。你可以選擇在線閱讀&#xff08;推薦&#xff09…