详解二维码生成工厂

本次主要分享的是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://格式的链接地址,那么手机扫描后会自动重定向到改http://链接地址上(这个扫描重定向可以用来做一些商品或者文章的查看)
  • google接口暂未研究出此Logo图标地址参数(希望有朋友研究出来后与我分享,谢谢)
  • 由于api地址是国外的,调用接口响应不是那么快速

其次,上面是个人的一些总结,下面我们来看下封装的请求接口方法和下载二维码图片方法:

#region 生成二维码

 /// <summary>
 /// 生成二维码
 /// </summary>
 /// <param name="content">展示内容(文本内容 或者 扫描后的跳转http://格式的地址)</param>
 /// <param name="savePath">保存二维码的磁盘路径(默认程序跟目录+QRCode)</param>
 /// <param name="logoUrl"> Logo图标地址(格式:http://),(注:google接口暂未研究出此参数)</param>
 /// <param name="apiUrl">接口地址(内置默认api地址)</param>
 /// <param name="wAndh">宽度和高度(二维码正方形的,高宽一至,默认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 参数初始化
 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">保存路径默认: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

上面两个方法使用的是虚方法,因为我这里是吧google接口当做默认的二维码生成器来使用,后面要讲的另外两个接口都是重写与此;下载图片的方法都是公用的,暂不需要重写;这里需要提到的是调用api接口时有一个固定的参数cht=qr,这个参数表示采用QR方法生成二维码,因为这个api接口还有生成图标的功能,所以只想要生成二维码这里就固定,更多的生成图标功能不在本章分享中,谢谢。

2d-code的Api二维码生成接口

首先,该接口需要通过他们官网注册一个key,然后从后台获取到这个key后才能调用接口地址,当然注册后有个功能是,凡是您通过api接口生成的二维码,除了自己通过流下载,还能通过他们后台一起下载所有生成的图片,本人暂时没有去关注是否生成量大了会收费哈哈,下面列举下接口参数说明和测试得出的注意点:

  • 接口关键参数是:key(注册获取),text(文本参数),url(扫描后重定向地址),logo(Logo图标地址),size(二维码正方形,高宽)
  • 接口的文本参数只能传递文本,不能当做扫描后重定向的地址参数使用和Google等接口有点不一样
  • 扫描后重定向地址和Logo图标地址都是可访问的http://格式的地址链接
  • Logo图标地址,官方说不建议使用png格式,测试只有jpg成功(可能是测试不够多这里只单纯介绍我的结果)
  • 生成速度比较快,而且还有一个艺术字的生成接口,挺不错
  • api接口只会生成一个二维码的图片流,如果需要把图片保存到本地需要通过浏览器直接get访问接口或者通过程序下载这个二维码

其次,下面给出封装的代码,由于下载和上面介绍的代码一样是公用的这里就不做陈述:

public QR_2dCode()
 {
 ApiUrl = "http://www.2d-code.cn/2dcode/api.php";
 }
 #region 生成二维码
 /// <summary>
 /// 生成二维码
 /// </summary>
 /// <param name="content">展示内容(文本内容 或者 扫描后的跳转http://格式的地址)</param>
 /// <param name="savePath">保存二维码的磁盘路径(默认程序跟目录+QRCode)</param>
 /// <param name="logoUrl"> Logo图标地址(格式:http://),官方不建议使用png格式,测试只有jpg成功</param>
 /// <param name="directUrl">扫描后重定向地址(http://)</param>
 /// <param name="apiUrl">接口地址(内置默认api地址)</param>
 /// <param name="wAndh">宽度和高度(二维码正方形的,高宽一至,默认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 参数初始化
 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二维码生成接口

首先,该接口肯定是免费的,参数描述和google的差不多,不同处在于可以传递Logo图标地址(当然可能我还没发现google的可以传递logo的参数,故此朋友们可以忽略);下面列举下接口参数说明和测试得出的注意点:

  • 接口关键参数是:text(内容参数),logo(Logo图标地址),w(生成出来二维码图片尺寸,格式如:200x200,这里是xyz的x不是*)
  • api接口只会生成一个二维码的图片流,如果需要把图片保存到本地需要通过浏览器直接get访问接口或者通过程序下载这个二维码
  • 内容参数如果传递文本信息,在生成出来的二维码图片中间不会显示文本内容,只有用手机扫描二维码才能在手机上显示传递的文本信息
  • 内容参数如果传递单纯的http://格式的链接地址,那么手机扫描后会自动重定向到改http://链接地址上(这个扫描重定向可以用来做一些商品或者文章的查看)
  • Logo图标地址(格式:http://),jpg,png测试通过
  • 测试得出有时候请求生成二维码不返回数据,有可能是我网路问题吧,正常生成二维码的速度还是挺快

其次,下面给出封装的代码,由于下载和上面介绍的代码一样是公用的这里就不做陈述:

public QR_TopScan()
 {
 ApiUrl = "http://qr.topscan.com/api.php";
 }
 #region 生成二维码
 /// <summary>
 /// 生成二维码
 /// </summary>
 /// <param name="content">展示内容(文本内容 或者 扫描后的跳转http://格式的地址)</param>
 /// <param name="savePath">保存二维码的磁盘路径(默认程序跟目录+QRCode)</param>
 /// <param name="logoUrl"> Logo图标地址(格式:http://),jpg,png测试通过,测试得出有不能成功的,原因不知是否和地址有关</param>
 /// <param name="apiUrl">接口地址(内置默认api地址)</param>
 /// <param name="wAndh">宽度和高度(二维码正方形的,高宽一至,默认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 参数初始化
 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

使用面向对象+加载程序集创建对象合并以上接口封装成二维码生成工厂

首先,分析上面3个接口的参数可以看出,都需要固定的参数:接口api,内容(文本或跳转http地址),Logo图片地址(google暂时除外),宽度和高度等这几个参数,这样一来咋们可以定义个统一参数类,来传递该参数信息,这里还要提下由于这几个接口都是从别人接口获取图片流,如果想要吧图片在执行程序时候直接保存在我们的程序本地,都需要下载,所以又多一个参数: 保存二维码的磁盘路径,所以才有了一下公共的属性:

#region 基础配置信息
 /// <summary>
 /// 接口地址(必填)
 /// </summary>
 protected string ApiUrl = "https://chart.googleapis.com/chart";
 /// <summary>
 /// 展示内容(文本内容),google文本参数直接传递http地址直接重定向
 /// </summary>
 protected string Content = "http://www.cnblogs.com/wangrudong003/";
 /// <summary>
 /// 保存二维码的磁盘路径(默认程序跟目录+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>
 /// 宽度和高度(二维码正方形的,高宽一至,默认200)
 /// </summary>
 protected int WAndH = 200;
#endregion

然后,这里我不想每个接口都手动new一次来创建对象,所以用了加载程序集的模块的方式来创建所需要的对象,因此有了工厂类的入口:

/// <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>
 /// 工厂模块定义
 /// </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 ,由于是国外地址,相对来说有点慢
 /// </summary>
 public class BaseQRCode
 {
 #region 基础配置信息
 /// <summary>
 /// 接口地址(必填)
 /// </summary>
 protected string ApiUrl = "https://chart.googleapis.com/chart";
 /// <summary>
 /// 展示内容(文本内容),google文本参数直接传递http地址直接重定向
 /// </summary>
 protected string Content = "http://www.cnblogs.com/wangrudong003/";
 /// <summary>
 /// 保存二维码的磁盘路径(默认程序跟目录+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>
 /// 宽度和高度(二维码正方形的,高宽一至,默认200)
 /// </summary>
 protected int WAndH = 200;
 #endregion
 #region 方法
 #region 生成二维码
 /// <summary>
 /// 生成二维码
 /// </summary>
 /// <param name="content">展示内容(文本内容 或者 扫描后的跳转http://格式的地址)</param>
 /// <param name="savePath">保存二维码的磁盘路径(默认程序跟目录+QRCode)</param>
 /// <param name="logoUrl"> Logo图标地址(格式:http://),(注:google接口暂未研究出此参数)</param>
 /// <param name="apiUrl">接口地址(内置默认api地址)</param>
 /// <param name="wAndh">宽度和高度(二维码正方形的,高宽一至,默认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 参数初始化
 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">保存路径默认: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
 #endregion
 }
 /// <summary>
 /// 使用2d-code提供Api,需要去官网注册获取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">展示内容(文本内容 或者 扫描后的跳转http://格式的地址)</param>
 /// <param name="savePath">保存二维码的磁盘路径(默认程序跟目录+QRCode)</param>
 /// <param name="logoUrl"> Logo图标地址(格式:http://),官方不建议使用png格式,测试只有jpg成功</param>
 /// <param name="directUrl">扫描后重定向地址(http://)</param>
 /// <param name="apiUrl">接口地址(内置默认api地址)</param>
 /// <param name="wAndh">宽度和高度(二维码正方形的,高宽一至,默认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 参数初始化
 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">展示内容(文本内容 或者 扫描后的跳转http://格式的地址)</param>
 /// <param name="savePath">保存二维码的磁盘路径(默认程序跟目录+QRCode)</param>
 /// <param name="logoUrl"> Logo图标地址(格式:http://),jpg,png测试通过,测试得出有不能成功的,原因不知是否和地址有关</param>
 /// <param name="apiUrl">接口地址(内置默认api地址)</param>
 /// <param name="wAndh">宽度和高度(二维码正方形的,高宽一至,默认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 参数初始化
 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
 }

本篇的分享内容在程序设计方面没有太多,重点是分装下这几个接口和分享下接口的差异,方面朋友们可以拿来主义和正在对接二维码生成的朋友做下交流,仅此而已;关键代码的备注都在分享代码里,有更好或者不清楚的地方欢迎留言,谢谢。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!

(0)

相关推荐

  • php二维码生成

    本文介绍两种使用 php 生成二维码的方法. (1)利用google生成二维码的开放接口,代码如下: /** * google api 二维码生成[QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式] * @param string $data 二维码包含的信息,可以是数字.字符.二进制信息.汉字.不能混合数据类型,数据必须经过UTF-8 URL-encoded.如果需要传递的信息超过2K个字节,请使用POST方式 * @param int $widhtHeig

  • Python实现的二维码生成小软件

    前几天,我估摸着做一个能生成QR Code小程序,并能用wxPython在屏幕上显示出来.当然,我想用纯Python实现,观望了一会后,我找到了三个候选: github 上的 python-qrcode sourceforge上的 pyqrcode Goolge code 上的 pyqrnative 我尝试了python-qrcode以及pyqrnative,因为它们能够运行在Windows/Mac/Linux.也不需要依赖额外的其他库除了Python图像库.pyqrcode项目需要其他一些先决

  • 批处理制作二维码生成器

    这个程序不能直接支持 Unicode, 同样不能直接支持任何双字节或多字节字符(包括汉字), 但可以用十六进制转码的方式生成包含 Unicode (或其他任何编码)字符的二维码图形. 如果数据含有UTF-8 Unicode 字符时, 在数据头部加上 BOM (\xEF\xBB\xBF) 即可. 例如: \xEF\xBB\xBF\xE6\xB1\x89\xE5\xAD\x97 上面的代码表示中文字符 "汉字" 任何 ASCII 字符(\x00 到 \xFF)都可以用十六进制转码方式输入,

  • 月下载量上千次Android实现二维码生成器app源码分享

    在360上面上线了一个月,下载量上千余次.这里把代码都分享出来,供大家学习哈!还包括教大家如何接入广告,赚点小钱花花,喜欢的帮忙顶一个,大神见了勿喷,小学僧刚学Android没多久.首先介绍这款应用:APP是一款二维码生成器,虽然如何制作二维码教程网上有很多,我这里再唠叨一下并把我的所有功能模块代码都分享出来. 在这里我们需要一个辅助类RGBLuminanceSource,这个类Google也提供了,我们直接粘贴过去就可以使用了 package com.njupt.liyao; import c

  • 使用Zxing实现二维码生成器内嵌图片

    使用Zxing实现二维码生成器内嵌图片,具有一定的参考价值,具体如下: 基本思路是先使用zxing生成的二维码图片,然后读取图片,在其中插入图标,然后整个输出图片. 最近的项目中需要生成二维码,找了几个例子综合下,做出了最后的效果,二维码可以生成图片格式(jpg等)或者在web页面上显示,此片文章仅作记录,雷同之处多多,包涵.... 注:需要Zxing包装的工具类,大概的流程是读取内嵌的图片,将内容转化成二维码,将图片内嵌到二维码中,出图. 下面是完整代码: import Java.awt.Ba

  • Python二维码生成库qrcode安装和使用示例

    二维码简称 QR Code(Quick Response Code),学名为快速响应矩阵码,是二维条码的一种,由日本的 Denso Wave公司于 1994 年发明.现随着智能手机的普及,已广泛应用于平常生活中,例如商品信息查询.社交好友互动.网络地址访问等等. 安装 Python 的二维码库 -- qrcode 由于生成 qrcode 图片需要依赖 Python 的图像库,所以需要先安装 Python 图像库 PIL(Python Imaging Library),不然会遇到 "ImportE

  • java实现二维码生成的几个方法(推荐)

    java实现二维码生成的几个方法,具体如下: 1: 使用SwetakeQRCode在Java项目中生成二维码 http://swetake.com/qr/ 下载地址 或着http://sourceforge.jp/projects/qrcode/downloads/28391/qrcode.zip 这个是日本人写的,生成的是我们常见的方形的二维码 可以用中文 如:5677777ghjjjjj 2: 使用BarCode4j生成条形码和二维码 BarCode4j网址:http://sourcefor

  • google提供二维码生成器

    google提供二维码生成器 其实就是参考下面的传参方法 复制代码 代码如下: http://chart.apis.google.com/chart?cht=qr&chs=200x200&chl=http://www.jb51.net&choe=UTF-8 具体看下面二维码的图片路径.

  • PHP微信开发之二维码生成类

    <?php /** * Created by PhpStorm. * User: bin * Date: 15-1-16 * Time: 上午9:48 */ namespace Home\Common; // 微信处理类 set_time_limit(30); class Weixin{ //构造方法 static $qrcode_url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?"; static $token_url

  • iOS 二维码生成及扫码详解及实例代码

    iOS二维码生成及扫码 现在越来越多的应用加入二维码相关的业务,在iOS开发市场上很多开发人员都在使用第三方的扫码与生成二维码的控件,个人认为此类的第三方控件识别度不高.最近正好整理新框架的事情,研究了一下.具体代码如下 生成二维码代码 /** * @author 半 饱, 15-12-18 * * @brief 生成二维码图片 * * @param code 生成二维码图片内容 * @param width 二维码图片宽度 * @param height 二维码图片高度 * * @return

  • c#二维码生成的代码分享

    复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Web; /// <summary>/// 调用外网API 生成二维码  周祥 2013年11月12日10:54:38/// </summary>public class Qr{    public Qr()    {        //        //TODO: 在此处添加构造函数逻辑        /

随机推荐