详解二维码生成工厂

2019-12-30 15:37:10王振洲

本次主要分享的是3个免费的二维码接口的对接代码和测试得出的注意点及区别,有更好处理方式多多交流,相互促进进步;最近在学习JavsScript的扩展TypeScript,感觉语法糖很甜,大部分与C#更为类似,可能都是微软项目的原因吧,有兴趣的朋友可以多多相互交流下;

以上是个人的看法,下面来正式分享今天的文章吧:

Google的Api二维码生成接口 2d-code的Api二维码生成接口 topscan的Api二维码生成接口 使用面向对象+加载程序集创建对象合并以上接口封装成二维码生成工厂

下面一步一个脚印的来分享:

Google的Api二维码生成接口

首先,这里给出Google接口文档的链接qr_codes文档,热情的朋友马上就会打开此链接吧,详细看下里面的参数这就不做截图了,大致通常用到的参数是:api地址,内容参数,生成图片的高宽这3个参数,其他的几个参数都采用默认的吧,不同需要大家可以更详细的看下;其实第一次看到文档里面的参数,感觉少了一些东西,比如怎么不能传递二维码中间那个图标的图片地址和扫描二维码过后怎么跳转到我想重定向的url链接呢,带着这个疑问我进行了多次的尝试;下面给出自己尝试的结果说明:

 接口关键参数是:cht(固定值qr),chl(内容参数),chs(生成出来二维码图片尺寸,格式如:200x200,这里是xyz的x不是*) api接口只会生成一个二维码的图片流,如果需要把图片保存到本地需要通过浏览器直接get访问接口或者通过程序下载这个二维码 内容参数如果传递文本信息,在生成出来的二维码图片中间不会显示文本内容,只有用手机扫描二维码才能在手机上显示传递的文本信息 内容参数如果传递单纯的http://www.easck.com/pre>

下载二维码图片保存到程序根目录:


#region 下载图片
 /// <summary>
 /// 下载图片
 /// </summary>
 /// <param name="url">图片下载地址</param>
 /// <param name="savePath">保存路径默认:Img文件夹</param>
 /// <param name="format">默认: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