二維碼你們都不陌生,在不少項目的開發過程當中也會接觸到二維碼的生成需求,雖然有不少各語言生成二維碼的實現方案,不過與之相比,最簡單快捷的方式是直接將內容拼接成一個URL用於展現二維碼圖片便可。php
市面上也有不少的免費的二維碼API可用,好比這個 或者 這個。html
前兩天我這兒的一個項目就遇到了個問題,一直在用的api.qrserver.com
掛了(如今已經又正常了),對應的二維碼圖片所有都不能展現,雖然馬上改了代碼換成了qr.topscan.com
,這也爲筆者敲了個警鐘,看看可否再備幾個二維碼實現方案呢。git
在整理資料的時候,發現七牛家也提供了一個二維碼API(連接),仔細研讀發現這是用於七牛存儲空間資源的二維碼下載方式。github
若是先將目標文本存到七牛,再用這個API生成二維碼,這個笨辦法好像也還行。api
難道我想要配一個二維碼還得調七牛接口先存一個文件上去?這也太麻煩了吧。編碼
雖然這樣作也能作,封裝成接口後也能夠一勞永逸,但我就是以爲,仍是麻煩啊。url
我曾經在作 php-blog 的時候用過七牛的一個鏡像功能(連接在這裏)。spa
簡單的說,訪問七牛空間的地址若是資源不存在,七牛就會嘗試訪問對應的鏡像地址獲取資源。code
因此,問題就簡單了。cdn
訪問七牛地址(帶二維碼API)->七牛訪問鏡像獲取資源->七牛保存資源並轉化成二維碼輸出
https://wanyaxing.com/qrcode?text=
http://qrcode.wanyaxing.com/helloworld
應該就等於訪問 https://wanyaxing.com/qrcode?text=/helloworld
https://wanyaxing.com/qrcode?text=/helloworld
出打印helloworld
便可。<?php
if (isset($_GET['text'])) {
$text = $_GET['text'];
if (substr($text, 0, 1) =='/') {
$text = substr($text,1);
}
echo $text;
} else {
echo 'no text found';
}
複製代碼
寫到最後發現本身也等於開發了一個二維碼API了呢, http://qrcode.wanyaxing.com/helloworld?qrcode/1
,將其中的 helloworld
改爲任意文字便可使用,(注:漢字的話須要編碼一下,好比urlencode/encodeURIComponent等)
固然,你們也能夠順着這個思路繼續改造,好比文字+自定義簽名
的方式來實現防盜用功能,此處就不做展開啦。
原文來自阿星的博客: wanyaxing.com/blog/201907…