二維碼生成工廠-創(chuàng)新互聯(lián)

本次主要分享的是3個(gè)免費(fèi)的二維碼接口的對接代碼和測試得出的注意點(diǎn)及區(qū)別,有更好處理方式多多交流,相互促進(jìn)進(jìn)步;最近在學(xué)習(xí)JavsScript的擴(kuò)展TypeScript,感覺語法糖很甜,大部分與C#更為類似,可能都是微軟項(xiàng)目的原因吧,有興趣的朋友可以多多相互交流下;

創(chuàng)新互聯(lián)建站不只是一家網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司;我們對營銷、技術(shù)、服務(wù)都有自己獨(dú)特見解,公司采取“創(chuàng)意+綜合+營銷”一體化的方式為您提供更專業(yè)的服務(wù)!我們經(jīng)歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。我們珍視每一份信任,關(guān)注我們的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)質(zhì)量和服務(wù)品質(zhì),在得到用戶滿意的同時(shí),也能得到同行業(yè)的專業(yè)認(rèn)可,能夠?yàn)樾袠I(yè)創(chuàng)新發(fā)展助力。未來將繼續(xù)專注于技術(shù)創(chuàng)新,服務(wù)升級,滿足企業(yè)一站式營銷型網(wǎng)站建設(shè)需求,讓再小的品牌網(wǎng)站建設(shè)也能產(chǎn)生價(jià)值!

以上是個(gè)人的看法,下面來正式分享今天的文章吧:

. Google的Api二維碼生成接口

. 2d-code的Api二維碼生成接口

. topscan的Api二維碼生成接口

. 使用面向?qū)ο?加載程序集創(chuàng)建對象合并以上接口封裝成二維碼生成工廠

下面一步一個(gè)腳印的來分享:

. Google的Api二維碼生成接口

首先,這里給出Google接口文檔的鏈接下載,熱情的朋友馬上就會打開此鏈接吧,詳細(xì)看下里面的參數(shù)這就不做截圖了,大致通常用到的參數(shù)是:api地址,內(nèi)容參數(shù),生成圖片的高寬這3個(gè)參數(shù),其他的幾個(gè)參數(shù)都采用默認(rèn)的吧,不同需要大家可以更詳細(xì)的看下;其實(shí)第一次看到文檔里面的參數(shù),感覺少了一些東西,比如怎么不能傳遞二維碼中間那個(gè)圖標(biāo)的圖片地址和掃描二維碼過后怎么跳轉(zhuǎn)到我想重定向的url鏈接呢,帶著這個(gè)疑問我進(jìn)行了多次的嘗試;下面給出自己嘗試的結(jié)果說明:

1. 接口關(guān)鍵參數(shù)是:cht(固定值qr),chl(內(nèi)容參數(shù)),chs(生成出來二維碼圖片尺寸,格式如:200x200,這里是xyz的x不是*)

2. api接口只會生成一個(gè)二維碼的圖片流,如果需要把圖片保存到本地需要通過瀏覽器直接get訪問接口或者通過程序下載這個(gè)二維碼

3. 內(nèi)容參數(shù)如果傳遞文本信息,在生成出來的二維碼圖片中間不會顯示文本內(nèi)容,只有用手機(jī)掃描二維碼才能在手機(jī)上顯示傳遞的文本信息

4. 內(nèi)容參數(shù)如果傳遞單純的http://格式的鏈接地址,那么手機(jī)掃描后會自動重定向到改http://鏈接地址上下載(這個(gè)掃描重定向可以用來做一些商品或者文章的查看)

5. google接口暫未研究出此Logo圖標(biāo)地址參數(shù)(希望有朋友研究出來后與我分享,謝謝)

6. 由于api地址是國外的,調(diào)用接口響應(yīng)不是那么快速

其次,上面是個(gè)人的一些總結(jié),下面我們來看下封裝的請求接口方法和下載二維碼圖片方法:

二維碼生成工廠

 1  #region 生成二維碼 2  3         /// <summary> 4         /// 生成二維碼 5         /// </summary> 6         /// <param name="content">展示內(nèi)容(文本內(nèi)容 或者 掃描后的跳轉(zhuǎn)http://格式的地址)</param> 7         /// <param name="savePath">保存二維碼的磁盤路徑(默認(rèn)程序跟目錄+QRCode)</param> 8         /// <param name="logoUrl"> Logo圖標(biāo)地址(格式:http://),(注:google接口暫未研究出此參數(shù))</param> 9         /// <param name="apiUrl">接口地址(內(nèi)置默認(rèn)api地址)</param>10         /// <param name="wAndh">寬度和高度(二維碼正方形的,高寬一至,默認(rèn)200)</param>11         /// <returns></returns>12         public virtual string CreateQRCode(string content = null, string savePath = null, string logoUrl = null, string apiUrl = null, int? wAndh = null)13         {14             var qrName = string.Empty;15 16             #region 參數(shù)初始化17 18             ApiUrl = apiUrl ?? ApiUrl;19             Content = content ?? Content;20             SaveQRPath = savePath ?? SaveQRPath;21             LogoUrl = logoUrl ?? LogoUrl;22             WAndH = wAndh ?? WAndH;23             #endregion24 25             if (string.IsNullOrEmpty(ApiUrl)) { return qrName; }26 27             ApiUrl = string.Format("{0}?cht=qr&chl={1}&chs={2}x{2}",28                         ApiUrl,29                         /upload/otherpic16/);33             return qrName;34         }35         #endregion

二維碼生成工廠

下載二維碼圖片保存到程序根目錄:

二維碼生成工廠

 1  #region 下載圖片 2  3         /// <summary> 4         /// 下載圖片 5         /// </summary> 6         /// <param name="url">圖片下載地址</param> 7         /// <param name="savePath">保存路徑默認(rèn):Img文件夾</param> 8         /// <param name="format">默認(rèn):Jpeg</param> 9         /// <returns>新圖片名稱</returns>10         public virtual string DownImg(string url, string savePath = "QRCode", ImageFormat format = null)11         {12             var qrName = string.Empty;13             try14             {15                 format = format ?? ImageFormat.Jpeg;16 17                 HttpClient http = new HttpClient();18                 http.Timeout = new TimeSpan(0, 1, 0);19                 using (var stream = http.GetStreamAsync(url).Result)20                 {21 22                     if (!Directory.Exists(SaveQRPath)) { Directory.CreateDirectory(SaveQRPath); }23                     qrName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "." + format;24                     var path = Path.Combine(savePath, qrName);25                     using (Image img = Image.FromStream(stream))26                     {27                         img.Save(path, format);28                     }29                 }30             }31             catch (Exception ex)32             {33                 qrName = string.Empty;34             }35             return qrName;36         }37         #endregion

二維碼生成工廠

上面兩個(gè)方法使用的是虛方法,因?yàn)槲疫@里是吧google接口當(dāng)做默認(rèn)的二維碼生成器來使用,后面要講的另外兩個(gè)接口都是重寫與此;下載圖片的方法都是公用的,暫不需要重寫;這里需要提到的是調(diào)用api接口時(shí)有一個(gè)固定的參數(shù)cht=qr,這個(gè)參數(shù)表示采用QR方法生成二維碼,因?yàn)檫@個(gè)api接口還有生成圖標(biāo)的功能,所以只想要生成二維碼這里就固定,更多的生成圖標(biāo)功能不在本章分享中,謝謝。下載

. 2d-code的Api二維碼生成接口下載

首先,該接口需要通過他們官網(wǎng)注冊一個(gè)key,然后從后臺獲取到這個(gè)key后才能調(diào)用接口地址,當(dāng)然注冊后有個(gè)功能是,凡是您通過api接口生成的二維碼,除了自己通過流下載,還能通過他們后臺一起下載所有生成的圖片,本人暫時(shí)沒有去關(guān)注是否生成量大了會收費(fèi)哈哈,下面列舉下接口參數(shù)說明和測試得出的注意點(diǎn):

1. 接口關(guān)鍵參數(shù)是:key(注冊獲取),text(文本參數(shù)),url(掃描后重定向地址),logo(Logo圖標(biāo)地址),size(二維碼正方形,高寬)

2. 接口的文本參數(shù)只能傳遞文本,不能當(dāng)做掃描后重定向的地址參數(shù)使用和Google等接口有點(diǎn)不一樣

3. 掃描后重定向地址和Logo圖標(biāo)地址都是可訪問的http://格式的地址鏈接

4. Logo圖標(biāo)地址,官方說不建議使用png格式,測試只有jpg成功(可能是測試不夠多這里只單純介紹我的結(jié)果)

5. 生成速度比較快,而且還有一個(gè)藝術(shù)字的生成接口,挺不錯(cuò)

6. api接口只會生成一個(gè)二維碼的圖片流,如果需要把圖片保存到本地需要通過瀏覽器直接get訪問接口或者通過程序下載這個(gè)二維碼

其次,下面給出封裝的代碼下載,由于下載和上面介紹的代碼一樣是公用的這里就不做陳述:

二維碼生成工廠 View Code

. topscan的Api二維碼生成接口下載

首先,該接口肯定是免費(fèi)的,參數(shù)描述和google的差不多,不同處在于可以傳遞Logo圖標(biāo)地址(當(dāng)然可能我還沒發(fā)現(xiàn)google的可以傳遞logo的參數(shù),故此朋友們可以忽略);下面列舉下接口參數(shù)說明和測試得出的注意點(diǎn):

1. 接口關(guān)鍵參數(shù)是:text(內(nèi)容參數(shù)),logo(Logo圖標(biāo)地址),w(生成出來二維碼圖片尺寸,格式如:200x200,這里是xyz的x不是*)

2. api接口只會生成一個(gè)二維碼的圖片流,如果需要把圖片保存到本地需要通過瀏覽器直接get訪問接口或者通過程序下載這個(gè)二維碼

3. 內(nèi)容參數(shù)如果傳遞文本信息,在生成出來的二維碼圖片中間不會顯示文本內(nèi)容,只有用手機(jī)掃描二維碼才能在手機(jī)上顯示傳遞的文本信息

4. 內(nèi)容參數(shù)如果傳遞單純的http://格式的鏈接地址,那么手機(jī)掃描后會自動重定向到改http://鏈接地址上(這個(gè)掃描重定向可以用來做一些商品或者文章的查看)

5. Logo圖標(biāo)地址(格式:http://),jpg,png測試通過

6. 測試得出有時(shí)候請求生成二維碼不返回?cái)?shù)據(jù),有可能是我網(wǎng)路問題吧,正常生成二維碼的速度還是挺快

其次,下面給出封裝的代碼下載,由于下載和上面介紹的代碼一樣是公用的這里就不做陳述:

二維碼生成工廠 View Code

. 使用面向?qū)ο?加載程序集創(chuàng)建對象合并以上接口封裝成二維碼生成工廠

首先,分析上面3個(gè)接口的參數(shù)可以看出,都需要固定的參數(shù):接口api,內(nèi)容(文本或跳轉(zhuǎn)http地址),Logo圖片地址(google暫時(shí)除外),寬度和高度等這幾個(gè)參數(shù),這樣一來咋們可以定義個(gè)統(tǒng)一參數(shù)類,來傳遞該參數(shù)信息,這里還要提下由于這幾個(gè)接口都是從別人接口獲取圖片流,如果想要吧圖片在執(zhí)行程序時(shí)候直接保存在我們的程序本地,都需要下載,所以又多一個(gè)參數(shù): 保存二維碼的磁盤路徑,所以才有了一下公共的屬性:

二維碼生成工廠

 1 #region 基礎(chǔ)配置信息 2  3         /// <summary> 4         /// 接口地址(必填) 5         /// </summary> 6         protected string ApiUrl = "https://chart.googleapis.com/chart"; 7  8         /// <summary> 9         /// 展示內(nèi)容(文本內(nèi)容),google文本參數(shù)直接傳遞http地址直接重定向10         /// </summary>11         protected string Content = "http://www.cnblogs.com/wangrudong003/";12 13         /// <summary>14         /// 保存二維碼的磁盤路徑(默認(rèn)程序跟目錄+QRCode)15         /// </summary>16         protected string SaveQRPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "QRCode");17 18         /// <summary>19         /// Logo圖片地址(/upload/otherpic16/2cf5e0fe9925bc318cb9fe965edf8db1ca1370dc.jpg";22 23         /// <summary>24         /// 寬度和高度(二維碼正方形的,高寬一至,默認(rèn)200)25         /// </summary>26         protected int WAndH = 200;27 28         #endregion

二維碼生成工廠

然后,這里我不想每個(gè)接口都手動new一次來創(chuàng)建對象,所以用了加載程序集的模塊的方式來創(chuàng)建所需要的對象,因此有了工廠類的入口下載:

二維碼生成工廠

 1  /// <summary> 2     /// 二維碼生成工廠 3     /// </summary> 4     public class QRCodeReposity 5     { 6  7         public static BaseQRCode Current(QREmType qrEmType = QREmType.BaseQRCode) 8         { 9 10             var nspace = typeof(BaseQRCode);11             var fullName = nspace.FullName;12             var nowspace = fullName.Substring(0, fullName.LastIndexOf('.') + 1);13 14             return Assembly.GetExecutingAssembly().CreateInstance(nowspace + qrEmType.ToString(), true) as BaseQRCode;15         }16     }

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。

網(wǎng)站題目:二維碼生成工廠-創(chuàng)新互聯(lián)
分享鏈接:http://muchs.cn/article20/ihoco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)做網(wǎng)站、定制網(wǎng)站、面包屑導(dǎo)航標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司