欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解二維碼生成工廠

 更新時(shí)間:2016年12月16日 17:00:48   作者:神牛步行3  
本篇文章主要分享的是3個(gè)免費(fèi)的二維碼接口的對(duì)接代碼和測(cè)試得出的注意點(diǎn)及區(qū)別。具有很好的參考價(jià)值,需要的朋友一起來看下吧

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

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

  • Google的Api二維碼生成接口
  • 2d-code的Api二維碼生成接口
  • topscan的Api二維碼生成接口
  • 使用面向?qū)ο?加載程序集創(chuàng)建對(duì)象合并以上接口封裝成二維碼生成工廠

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

Google的Api二維碼生成接口

首先,這里給出Google接口文檔的鏈接qr_codes文檔,熱情的朋友馬上就會(huì)打開此鏈接吧,詳細(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é)果說明:

  •  接口關(guān)鍵參數(shù)是:cht(固定值qr),chl(內(nèi)容參數(shù)),chs(生成出來二維碼圖片尺寸,格式如:200x200,這里是xyz的x不是*)
  • api接口只會(huì)生成一個(gè)二維碼的圖片流,如果需要把圖片保存到本地需要通過瀏覽器直接get訪問接口或者通過程序下載這個(gè)二維碼
  • 內(nèi)容參數(shù)如果傳遞文本信息,在生成出來的二維碼圖片中間不會(huì)顯示文本內(nèi)容,只有用手機(jī)掃描二維碼才能在手機(jī)上顯示傳遞的文本信息
  • 內(nèi)容參數(shù)如果傳遞單純的http://格式的鏈接地址,那么手機(jī)掃描后會(huì)自動(dòng)重定向到改http://鏈接地址上(這個(gè)掃描重定向可以用來做一些商品或者文章的查看)
  • google接口暫未研究出此Logo圖標(biāo)地址參數(shù)(希望有朋友研究出來后與我分享,謝謝)
  • 由于api地址是國外的,調(diào)用接口響應(yīng)不是那么快速

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

#region 生成二維碼

 /// <summary>
 /// 生成二維碼
 /// </summary>
 /// <param name="content">展示內(nèi)容(文本內(nèi)容 或者 掃描后的跳轉(zhuǎn)http://格式的地址)</param>
 /// <param name="savePath">保存二維碼的磁盤路徑(默認(rèn)程序跟目錄+QRCode)</param>
 /// <param name="logoUrl"> Logo圖標(biāo)地址(格式:http://),(注:google接口暫未研究出此參數(shù))</param>
 /// <param name="apiUrl">接口地址(內(nèi)置默認(rèn)api地址)</param>
 /// <param name="wAndh">寬度和高度(二維碼正方形的,高寬一至,默認(rèn)200)</param>
 /// <returns></returns>
 public virtual string CreateQRCode(string content = null, string savePath = null, string logoUrl = null, string apiUrl = null, int? wAndh = null)
 {
 var qrName = string.Empty;
 #region 參數(shù)初始化
 ApiUrl = apiUrl ?? ApiUrl;
 Content = content ?? Content;
 SaveQRPath = savePath ?? SaveQRPath;
 LogoUrl = logoUrl ?? LogoUrl;
 WAndH = wAndh ?? WAndH;
 #endregion
 if (string.IsNullOrEmpty(ApiUrl)) { return qrName; }
 ApiUrl = string.Format("{0}?cht=qr&chl={1}&chs={2}x{2}",
 ApiUrl,
 HttpUtility.UrlEncode(Content),
 WAndH);
 qrName = DownImg(ApiUrl, SaveQRPath, ImageFormat.Jpeg);
 return qrName;
 }
 #endregion

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

#region 下載圖片
 /// <summary>
 /// 下載圖片
 /// </summary>
 /// <param name="url">圖片下載地址</param>
 /// <param name="savePath">保存路徑默認(rèn):Img文件夾</param>
 /// <param name="format">默認(rèn):Jpeg</param>
 /// <returns>新圖片名稱</returns>
 public virtual string DownImg(string url, string savePath = "QRCode", ImageFormat format = null)
 {
 var qrName = string.Empty;
 try
 {
 format = format ?? ImageFormat.Jpeg;
 HttpClient http = new HttpClient();
 http.Timeout = new TimeSpan(0, 1, 0);
 using (var stream = http.GetStreamAsync(url).Result)
 {
 if (!Directory.Exists(SaveQRPath)) { Directory.CreateDirectory(SaveQRPath); }
 qrName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "." + format;
 var path = Path.Combine(savePath, qrName);
 using (Image img = Image.FromStream(stream))
 {
 img.Save(path, format);
 }
 }
 }
 catch (Exception ex)
 {
 qrName = string.Empty;
 }
 return qrName;
 }
#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)注冊(cè)一個(gè)key,然后從后臺(tái)獲取到這個(gè)key后才能調(diào)用接口地址,當(dāng)然注冊(cè)后有個(gè)功能是,凡是您通過api接口生成的二維碼,除了自己通過流下載,還能通過他們后臺(tái)一起下載所有生成的圖片,本人暫時(shí)沒有去關(guān)注是否生成量大了會(huì)收費(fèi)哈哈,下面列舉下接口參數(shù)說明和測(cè)試得出的注意點(diǎn):

  • 接口關(guān)鍵參數(shù)是:key(注冊(cè)獲取),text(文本參數(shù)),url(掃描后重定向地址),logo(Logo圖標(biāo)地址),size(二維碼正方形,高寬)
  • 接口的文本參數(shù)只能傳遞文本,不能當(dāng)做掃描后重定向的地址參數(shù)使用和Google等接口有點(diǎn)不一樣
  • 掃描后重定向地址和Logo圖標(biāo)地址都是可訪問的http://格式的地址鏈接
  • Logo圖標(biāo)地址,官方說不建議使用png格式,測(cè)試只有jpg成功(可能是測(cè)試不夠多這里只單純介紹我的結(jié)果)
  • 生成速度比較快,而且還有一個(gè)藝術(shù)字的生成接口,挺不錯(cuò)
  • api接口只會(huì)生成一個(gè)二維碼的圖片流,如果需要把圖片保存到本地需要通過瀏覽器直接get訪問接口或者通過程序下載這個(gè)二維碼

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

public QR_2dCode()
 {
 ApiUrl = "http://www.2d-code.cn/2dcode/api.php";
 }
 #region 生成二維碼
 /// <summary>
 /// 生成二維碼
 /// </summary>
 /// <param name="content">展示內(nèi)容(文本內(nèi)容 或者 掃描后的跳轉(zhuǎn)http://格式的地址)</param>
 /// <param name="savePath">保存二維碼的磁盤路徑(默認(rèn)程序跟目錄+QRCode)</param>
 /// <param name="logoUrl"> Logo圖標(biāo)地址(格式:http://),官方不建議使用png格式,測(cè)試只有jpg成功</param>
 /// <param name="directUrl">掃描后重定向地址(http://)</param>
 /// <param name="apiUrl">接口地址(內(nèi)置默認(rèn)api地址)</param>
 /// <param name="wAndh">寬度和高度(二維碼正方形的,高寬一至,默認(rèn)200)</param>
 /// <returns></returns>
 public override string CreateQRCode(string content = null, string savePath = null, string logoUrl = null, string apiUrl = null, int? wAndh = null)
 {
 var qrName = string.Empty;
 #region 參數(shù)初始化
 ApiUrl = apiUrl ?? ApiUrl;
 Content = content ?? Content;
 SaveQRPath = savePath ?? SaveQRPath;
 LogoUrl = logoUrl ?? LogoUrl;
 WAndH = wAndh ?? WAndH;
 #endregion
 if (string.IsNullOrEmpty(ApiUrl)) { return qrName; }
 ApiUrl = string.Format("{0}?key=c_d800OBbu6hDzJtXPE2Yd02IMtmpuK9VdCqHe6vrtar4&text={1}&url={2}&logo={3}&size={4}",
 ApiUrl,
 HttpUtility.UrlEncode(Content.Contains("http") ? "" : Content),
 HttpUtility.UrlEncode(Content),
 HttpUtility.UrlEncode(LogoUrl),
 WAndH);
 qrName = DownImg(ApiUrl, SaveQRPath);
 return qrName;
 }
#endregion

topscan的Api二維碼生成接口

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

  • 接口關(guān)鍵參數(shù)是:text(內(nèi)容參數(shù)),logo(Logo圖標(biāo)地址),w(生成出來二維碼圖片尺寸,格式如:200x200,這里是xyz的x不是*)
  • api接口只會(huì)生成一個(gè)二維碼的圖片流,如果需要把圖片保存到本地需要通過瀏覽器直接get訪問接口或者通過程序下載這個(gè)二維碼
  • 內(nèi)容參數(shù)如果傳遞文本信息,在生成出來的二維碼圖片中間不會(huì)顯示文本內(nèi)容,只有用手機(jī)掃描二維碼才能在手機(jī)上顯示傳遞的文本信息
  • 內(nèi)容參數(shù)如果傳遞單純的http://格式的鏈接地址,那么手機(jī)掃描后會(huì)自動(dòng)重定向到改http://鏈接地址上(這個(gè)掃描重定向可以用來做一些商品或者文章的查看)
  • Logo圖標(biāo)地址(格式:http://),jpg,png測(cè)試通過
  • 測(cè)試得出有時(shí)候請(qǐng)求生成二維碼不返回?cái)?shù)據(jù),有可能是我網(wǎng)路問題吧,正常生成二維碼的速度還是挺快

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

public QR_TopScan()
 {
 ApiUrl = "http://qr.topscan.com/api.php";
 }
 #region 生成二維碼
 /// <summary>
 /// 生成二維碼
 /// </summary>
 /// <param name="content">展示內(nèi)容(文本內(nèi)容 或者 掃描后的跳轉(zhuǎn)http://格式的地址)</param>
 /// <param name="savePath">保存二維碼的磁盤路徑(默認(rèn)程序跟目錄+QRCode)</param>
 /// <param name="logoUrl"> Logo圖標(biāo)地址(格式:http://),jpg,png測(cè)試通過,測(cè)試得出有不能成功的,原因不知是否和地址有關(guān)</param>
 /// <param name="apiUrl">接口地址(內(nèi)置默認(rèn)api地址)</param>
 /// <param name="wAndh">寬度和高度(二維碼正方形的,高寬一至,默認(rèn)200)</param>
 /// <returns></returns>
 public override string CreateQRCode(string content = null, string savePath = null, string logoUrl = null, string apiUrl = null, int? wAndh = null)
 {
 var qrName = string.Empty;
 #region 參數(shù)初始化
 ApiUrl = apiUrl ?? ApiUrl;
 Content = content ?? Content;
 SaveQRPath = savePath ?? SaveQRPath;
 LogoUrl = logoUrl ?? LogoUrl;
 WAndH = wAndh ?? WAndH;
 #endregion
 if (string.IsNullOrEmpty(ApiUrl)) { return qrName; }
 ApiUrl = string.Format("{0}?text={1}&logo={2}&w={3}",
 ApiUrl,
 HttpUtility.UrlEncode(Content),
 HttpUtility.UrlEncode(LogoUrl),
 WAndH);
 qrName = DownImg(ApiUrl, SaveQRPath);
 return qrName;
 }
#endregion

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

首先,分析上面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ù): 保存二維碼的磁盤路徑,所以才有了一下公共的屬性:

#region 基礎(chǔ)配置信息
 /// <summary>
 /// 接口地址(必填)
 /// </summary>
 protected string ApiUrl = "https://chart.googleapis.com/chart";
 /// <summary>
 /// 展示內(nèi)容(文本內(nèi)容),google文本參數(shù)直接傳遞http地址直接重定向
 /// </summary>
 protected string Content = "http://www.cnblogs.com/wangrudong003/";
 /// <summary>
 /// 保存二維碼的磁盤路徑(默認(rèn)程序跟目錄+QRCode)
 /// </summary>
 protected string SaveQRPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "QRCode");
 /// <summary>
 /// Logo圖片地址(http://)
 /// </summary>
 protected string LogoUrl = "http://a.hiphotos.baidu.com/baike/w%3D268%3Bg%3D0/sign=9a34e44d8bd4b31cf03c93bdbfed4042/2cf5e0fe9925bc318cb9fe965edf8db1ca1370dc.jpg";
 /// <summary>
 /// 寬度和高度(二維碼正方形的,高寬一至,默認(rèn)200)
 /// </summary>
 protected int WAndH = 200;
#endregion

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

/// <summary>
 /// 二維碼生成工廠
 /// </summary>
 public class QRCodeReposity
 {
 public static BaseQRCode Current(QREmType qrEmType = QREmType.BaseQRCode)
 {
 var nspace = typeof(BaseQRCode);
 var fullName = nspace.FullName;
 var nowspace = fullName.Substring(0, fullName.LastIndexOf('.') + 1);
 return Assembly.GetExecutingAssembly().CreateInstance(nowspace + qrEmType.ToString(), true) as BaseQRCode;
 }
 }

這里和之前的緩存工廠文章設(shè)計(jì)差不多,可以查閱下之前的分享篇,也多多點(diǎn)贊,謝謝;下面在給出說有的代碼如下:

/// <summary>
 /// 工廠模塊定義
 /// </summary>
 public enum QREmType
 {
 /// <summary>
 /// google接口
 /// </summary>
 BaseQRCode,
 /// <summary>
 /// 2d-code接口
 /// </summary>
 QR_2dCode,
 /// <summary>
 /// topscan接口
 /// </summary>
 QR_TopScan
 }
 /// <summary>
 /// 二維碼生成工廠
 /// </summary>
 public class QRCodeReposity
 {
 public static BaseQRCode Current(QREmType qrEmType = QREmType.BaseQRCode)
 {
 var nspace = typeof(BaseQRCode);
 var fullName = nspace.FullName;
 var nowspace = fullName.Substring(0, fullName.LastIndexOf('.') + 1);
 return Assembly.GetExecutingAssembly().CreateInstance(nowspace + qrEmType.ToString(), true) as BaseQRCode;
 }
 }
 /// <summary>
 /// 基類使用Google提供Api:https://developers.google.com/chart/infographics/docs/qr_codes ,由于是國外地址,相對(duì)來說有點(diǎn)慢
 /// </summary>
 public class BaseQRCode
 {
 #region 基礎(chǔ)配置信息
 /// <summary>
 /// 接口地址(必填)
 /// </summary>
 protected string ApiUrl = "https://chart.googleapis.com/chart";
 /// <summary>
 /// 展示內(nèi)容(文本內(nèi)容),google文本參數(shù)直接傳遞http地址直接重定向
 /// </summary>
 protected string Content = "http://www.cnblogs.com/wangrudong003/";
 /// <summary>
 /// 保存二維碼的磁盤路徑(默認(rèn)程序跟目錄+QRCode)
 /// </summary>
 protected string SaveQRPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "QRCode");
 /// <summary>
 /// Logo圖片地址(http://)
 /// </summary>
 protected string LogoUrl = "http://a.hiphotos.baidu.com/baike/w%3D268%3Bg%3D0/sign=9a34e44d8bd4b31cf03c93bdbfed4042/2cf5e0fe9925bc318cb9fe965edf8db1ca1370dc.jpg";
 /// <summary>
 /// 寬度和高度(二維碼正方形的,高寬一至,默認(rèn)200)
 /// </summary>
 protected int WAndH = 200;
 #endregion
 #region 方法
 #region 生成二維碼
 /// <summary>
 /// 生成二維碼
 /// </summary>
 /// <param name="content">展示內(nèi)容(文本內(nèi)容 或者 掃描后的跳轉(zhuǎn)http://格式的地址)</param>
 /// <param name="savePath">保存二維碼的磁盤路徑(默認(rèn)程序跟目錄+QRCode)</param>
 /// <param name="logoUrl"> Logo圖標(biāo)地址(格式:http://),(注:google接口暫未研究出此參數(shù))</param>
 /// <param name="apiUrl">接口地址(內(nèi)置默認(rèn)api地址)</param>
 /// <param name="wAndh">寬度和高度(二維碼正方形的,高寬一至,默認(rèn)200)</param>
 /// <returns></returns>
 public virtual string CreateQRCode(string content = null, string savePath = null, string logoUrl = null, string apiUrl = null, int? wAndh = null)
 {
 var qrName = string.Empty;
 #region 參數(shù)初始化
 ApiUrl = apiUrl ?? ApiUrl;
 Content = content ?? Content;
 SaveQRPath = savePath ?? SaveQRPath;
 LogoUrl = logoUrl ?? LogoUrl;
 WAndH = wAndh ?? WAndH;
 #endregion
 if (string.IsNullOrEmpty(ApiUrl)) { return qrName; }
 ApiUrl = string.Format("{0}?cht=qr&chl={1}&chs={2}x{2}",
 ApiUrl,
 HttpUtility.UrlEncode(Content),
 WAndH);
 qrName = DownImg(ApiUrl, SaveQRPath, ImageFormat.Jpeg);
 return qrName;
 }
 #endregion
 #region 下載圖片
 /// <summary>
 /// 下載圖片
 /// </summary>
 /// <param name="url">圖片下載地址</param>
 /// <param name="savePath">保存路徑默認(rèn):Img文件夾</param>
 /// <param name="format">默認(rèn):Jpeg</param>
 /// <returns>新圖片名稱</returns>
 public virtual string DownImg(string url, string savePath = "QRCode", ImageFormat format = null)
 {
 var qrName = string.Empty;
 try
 {
 format = format ?? ImageFormat.Jpeg;
 HttpClient http = new HttpClient();
 http.Timeout = new TimeSpan(0, 1, 0);
 using (var stream = http.GetStreamAsync(url).Result)
 {
 if (!Directory.Exists(SaveQRPath)) { Directory.CreateDirectory(SaveQRPath); }
 qrName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "." + format;
 var path = Path.Combine(savePath, qrName);
 using (Image img = Image.FromStream(stream))
 {
 img.Save(path, format);
 }
 }
 }
 catch (Exception ex)
 {
 qrName = string.Empty;
 }
 return qrName;
 }
 #endregion
 #endregion
 }
 /// <summary>
 /// 使用2d-code提供Api,需要去官網(wǎng)注冊(cè)獲取Key
 /// </summary>
 public class QR_2dCode : BaseQRCode
 {
 public QR_2dCode()
 {
 ApiUrl = "http://www.2d-code.cn/2dcode/api.php";
 }
 #region 生成二維碼
 /// <summary>
 /// 生成二維碼
 /// </summary>
 /// <param name="content">展示內(nèi)容(文本內(nèi)容 或者 掃描后的跳轉(zhuǎn)http://格式的地址)</param>
 /// <param name="savePath">保存二維碼的磁盤路徑(默認(rèn)程序跟目錄+QRCode)</param>
 /// <param name="logoUrl"> Logo圖標(biāo)地址(格式:http://),官方不建議使用png格式,測(cè)試只有jpg成功</param>
 /// <param name="directUrl">掃描后重定向地址(http://)</param>
 /// <param name="apiUrl">接口地址(內(nèi)置默認(rèn)api地址)</param>
 /// <param name="wAndh">寬度和高度(二維碼正方形的,高寬一至,默認(rèn)200)</param>
 /// <returns></returns>
 public override string CreateQRCode(string content = null, string savePath = null, string logoUrl = null, string apiUrl = null, int? wAndh = null)
 {
 var qrName = string.Empty;
 #region 參數(shù)初始化
 ApiUrl = apiUrl ?? ApiUrl;
 Content = content ?? Content;
 SaveQRPath = savePath ?? SaveQRPath;
 LogoUrl = logoUrl ?? LogoUrl;
 WAndH = wAndh ?? WAndH;
 #endregion
 if (string.IsNullOrEmpty(ApiUrl)) { return qrName; }
 ApiUrl = string.Format("{0}?key=c_d800OBbu6hDzJtXPE2Yd02IMtmpuK9VdCqHe6vrtar4&text={1}&url={2}&logo={3}&size={4}",
 ApiUrl,
 HttpUtility.UrlEncode(Content.Contains("http") ? "" : Content),
 HttpUtility.UrlEncode(Content),
 HttpUtility.UrlEncode(LogoUrl),
 WAndH);
 qrName = DownImg(ApiUrl, SaveQRPath);
 return qrName;
 }
 #endregion
 }
 /// <summary>
 /// 使用topscan提供Api
 /// </summary>
 public class QR_TopScan : BaseQRCode
 {
 public QR_TopScan()
 {
 ApiUrl = "http://qr.topscan.com/api.php";
 }
 #region 生成二維碼
 /// <summary>
 /// 生成二維碼
 /// </summary>
 /// <param name="content">展示內(nèi)容(文本內(nèi)容 或者 掃描后的跳轉(zhuǎn)http://格式的地址)</param>
 /// <param name="savePath">保存二維碼的磁盤路徑(默認(rèn)程序跟目錄+QRCode)</param>
 /// <param name="logoUrl"> Logo圖標(biāo)地址(格式:http://),jpg,png測(cè)試通過,測(cè)試得出有不能成功的,原因不知是否和地址有關(guān)</param>
 /// <param name="apiUrl">接口地址(內(nèi)置默認(rèn)api地址)</param>
 /// <param name="wAndh">寬度和高度(二維碼正方形的,高寬一至,默認(rèn)200)</param>
 /// <returns></returns>
 public override string CreateQRCode(string content = null, string savePath = null, string logoUrl = null, string apiUrl = null, int? wAndh = null)
 {
 var qrName = string.Empty;
 #region 參數(shù)初始化
 ApiUrl = apiUrl ?? ApiUrl;
 Content = content ?? Content;
 SaveQRPath = savePath ?? SaveQRPath;
 LogoUrl = logoUrl ?? LogoUrl;
 WAndH = wAndh ?? WAndH;
 #endregion
 if (string.IsNullOrEmpty(ApiUrl)) { return qrName; }
 ApiUrl = string.Format("{0}?text={1}&logo={2}&w={3}",
 ApiUrl,
 HttpUtility.UrlEncode(Content),
 HttpUtility.UrlEncode(LogoUrl),
 WAndH);
 qrName = DownImg(ApiUrl, SaveQRPath);
 return qrName;
 }
 #endregion
 }

本篇的分享內(nèi)容在程序設(shè)計(jì)方面沒有太多,重點(diǎn)是分裝下這幾個(gè)接口和分享下接口的差異,方面朋友們可以拿來主義和正在對(duì)接二維碼生成的朋友做下交流,僅此而已;關(guān)鍵代碼的備注都在分享代碼里,有更好或者不清楚的地方歡迎留言,謝謝。

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • 在winform下實(shí)現(xiàn)左右布局多窗口界面的方法之續(xù)篇

    在winform下實(shí)現(xiàn)左右布局多窗口界面的方法之續(xù)篇

    這篇文章主要介紹了在winform下實(shí)現(xiàn)左右布局多窗口界面的方法之續(xù)篇 的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • c#實(shí)現(xiàn)最簡潔的快速排序(你絕對(duì)可以看懂)

    c#實(shí)現(xiàn)最簡潔的快速排序(你絕對(duì)可以看懂)

    這篇文章主要給大家介紹了關(guān)于利用c#實(shí)現(xiàn)如何最簡潔的快速排序,實(shí)現(xiàn)的方法你絕對(duì)可以看懂,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用c#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • WPF自定義控件和樣式之自定義按鈕(Button)

    WPF自定義控件和樣式之自定義按鈕(Button)

    接觸WPF也有兩個(gè)多月了,有了一定的理論基礎(chǔ)和項(xiàng)目經(jīng)驗(yàn),現(xiàn)在打算寫一個(gè)系列,做出來一個(gè)WPF的控件庫。下面這篇文章主要給大家介紹了關(guān)于WPF自定義控件和樣式之自定義按鈕(Button)的相關(guān)資料,需要的朋友可以參考下。
    2018-04-04
  • C#通過DataSet讀寫xml文件的方法

    C#通過DataSet讀寫xml文件的方法

    這篇文章主要介紹了C#通過DataSet讀寫xml文件的方法,涉及C#使用DataSet操作XML的相關(guān)技巧,方法簡單實(shí)用,需要的朋友可以參考下
    2015-05-05
  • C#實(shí)現(xiàn)Socket通信的解決方法

    C#實(shí)現(xiàn)Socket通信的解決方法

    這篇文章主要介紹了C#實(shí)現(xiàn)Socket通信的解決方法,需要的朋友可以參考下
    2014-07-07
  • 利用C#實(shí)現(xiàn)修改圖片透明度功能

    利用C#實(shí)現(xiàn)修改圖片透明度功能

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)修改圖片透明度功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以了解一下
    2022-12-12
  • c#調(diào)用c++方法介紹,window api

    c#調(diào)用c++方法介紹,window api

    c#在調(diào)用c++方法或者window api時(shí)不能象調(diào)用c#本身寫的dll類庫那樣直接通過引用dll就可以調(diào)用相應(yīng)的方法, 而是要把要引用的dll放到bin中,現(xiàn)通過[DllImport("um_web_client.dll")]引用
    2013-10-10
  • C#遍歷系統(tǒng)進(jìn)程的方法

    C#遍歷系統(tǒng)進(jìn)程的方法

    這篇文章主要介紹了C#遍歷系統(tǒng)進(jìn)程的方法,涉及C#底層操作獲取系統(tǒng)信息與硬件信息的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • C#使用Chart繪制曲線

    C#使用Chart繪制曲線

    這篇文章主要為大家詳細(xì)介紹了C#使用Chart繪制曲線,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C#實(shí)現(xiàn)帶進(jìn)度條的ListView

    C#實(shí)現(xiàn)帶進(jìn)度條的ListView

    這篇文章主要介紹了C#實(shí)現(xiàn)帶進(jìn)度條的ListView 的相關(guān)資料,需要的朋友可以參考下
    2016-02-02

最新評(píng)論