C#使用zxing/zbar/thoughtworkQRcode解析二维码的示例代码
最近做项目需要解析二维码图片,找了一大圈,发现没有人去整理下开源的几个库案例,花了点时间
做了zxing,zbar和thoughtworkqrcode解析二维码案例,希望大家有帮助。
zxing是谷歌开源的二维码库,zbar,thoughtworkQRcode也是开源的,三者之间比较各有优劣
下面通过一个案例demo源码,来认识学习下这三者的实际解码效果,
第一次上传demo源码,献丑了
zbar解析关键代码:
Image primaryImage = Image.FromFile(fileName); Bitmap pImg = MakeGrayscale3((Bitmap)primaryImage); using (ZBar.ImageScanner scanner = new ZBar.ImageScanner()) { List<ZBar.Symbol> symbols = new List<ZBar.Symbol>(); System.Diagnostics.Stopwatch watch = new Stopwatch(); watch.Start(); symbols = scanner.Scan((Image)pImg); watch.Stop(); TimeSpan timeSpan = watch.Elapsed; MessageBox.Show("扫描执行时间:" + timeSpan.TotalMilliseconds.ToString()); if (symbols != null && symbols.Count > 0) { string result = string.Empty; symbols.ForEach(s => result += "条码内容:" + s.Data + " 条码质量:" + s.Type + Environment.NewLine); MessageBox.Show(result); } }
zxing解析关键代码:
Image primaryImage = Image.FromFile(fileName); Bitmap pImg = MakeGrayscale3((Bitmap)primaryImage); BarcodeReader reader = new BarcodeReader(); System.Diagnostics.Stopwatch watch = new Stopwatch(); watch.Start(); Result result = reader.Decode((Bitmap)pImg); //通过reader解码 watch.Stop(); TimeSpan timeSpan = watch.Elapsed; MessageBox.Show("二维码值:"+result+"扫描执行时间:" + timeSpan.TotalMilliseconds.ToString());
thoughtworkqrcode解析关键代码:
Image primaryImage = Image.FromFile(fileName); Bitmap pImg = (Bitmap)primaryImage;// MakeGrayscale3((Bitmap)primaryImage); try { System.Diagnostics.Stopwatch watch = new Stopwatch(); watch.Start(); string decodedString = new QRCodeDecoder().decode(new QRCodeBitmapImage(pImg), Encoding.UTF8); watch.Stop(); TimeSpan timeSpan = watch.Elapsed; MessageBox.Show("二维码值:" + decodedString + "扫描执行时间:" + timeSpan.TotalMilliseconds.ToString()); } catch (Exception ex) { MessageBox.Show("好难过"); }
下面来测试下三者之间的给力程度吧,在草料二维码网页上在线生成一个二维码
为了测试给力程度,我们截出如下图片,三者对比解码:
下面来看下效果吧:
zbar效果
zxing效果
thoughtworqrcode效果
从解码的效率上来看zbar》zxing》thoughtworkqrcode
从稳定性来看zbar是最差的,zbar这个开源项目已经很久没再维护更新了,所以这也是跟不上时代的一个原因,但是效率确实比较高。
到此这篇关于C#使用zxing/zbar/thoughtworkQRcode解析二维码的示例代码的文章就介绍到这了,更多相关C#解析二维码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
C#基于DBContext(EF)实现通用增删改查的REST方法实例
这篇文章主要介绍了C#基于DBContext(EF)实现通用增删改查的REST方法实例,是C#程序设计中非常实用的技巧,需要的朋友可以参考下2014-10-10
最新评论