asp.net 生成、解析条形码和二维码

原文 asp.net 生成、解析条形码和二维码

一、条形码

一维码,俗称条形码,广泛的用于电子工业等行业。比如我们常见的书籍背面就会有条形码,通过扫描枪等设备扫描就可以获得书籍的ISBN(International standard book number,国际标准书号)。编码方式也很多,比如Code39和Code128等等,这两个编码的类代码见code39和code128,摘自于互联网,稍加修改(比如文字置于条码的中间位置)。读者可以直接拷贝自项目中使用,这里简单演示一下,以Code128为例。

            Code128 code = new Code128();code.ValueFont = new Font("Arial", 7);//声明条码下方的字体Bitmap bitMap = code.GetCodeImage(tf6_PERSONIDNUM.Text.Trim(), Code128.Encode.Code128A);//通过对文本框的文件进行Code128编码获得位图string fileName = Server.MapPath("~") + "Images\\QRImages\\" + tf6_PERSONIDNUM.Text.Trim() + ".jpg";//获取图片路径bitMap.Save(fileName, ImageFormat.Jpeg);//保存图片this.QRCodeImage.ImageUrl = "~/Images/QRImages/" + tf6_PERSONIDNUM.Text.Trim() + ".jpg";//图片控件显示

Code39的类使用方法类似。由于Code39编码使用较为广泛,网上也有很多封装好的dll可直接使用,比如BarCode,直接引用dll即可。

引用BarCode方式的代码:

            BarcodeControl barcode = new BarcodeControl();barcode.BarcodeType = BarcodeType.CODE128C;barcode.CopyRight = ""; // 空字符串就会不显示标题;barcode.Data = tf6_PERSONIDNUM.Text.Trim();MemoryStream stream = new MemoryStream();barcode.MakeImage(ImageFormat.Png, 1, 1, true, false, null, stream);Bitmap bitMap = new Bitmap(stream);string fileName = Server.MapPath("~") + "Images\\QRImages\\" + tf6_PERSONIDNUM.Text.Trim() + ".jpg";bitMap.Save(fileName, ImageFormat.Jpeg);this.QRCodeImage.ImageUrl = "~/Images/QRImages/" + tf6_PERSONIDNUM.Text.Trim() + ".jpg";

最后上个效果图:

二、二维码

二维码现在越来越流行,可以使用手机上或其它移动终端上的二维码扫描器软件对着二维码一扫,就可以得到相关信息。在互联网站上,可以找到很多二维码的工具,甚至还有不少在线生成、解析二维码的网站。在业务系统当中,比如档案管理系统中,以前一般都是通过条形码(一维码)来存储档案职工的基本信息,但是存储容量有限。而现在完全可以使用二维码存储更多容量的信息。

我们这里使用了ThoughtWorks.QRCode.dll这个类库,在asp.net项目中引用这个dll文件,就可以使用相关API进行开发。

比如,我们封装了一个最精简的类:

    /// <summary>/// 二维码助手类/// </summary>public class QRCodeOp{/// <summary>/// 生成二维码/// </summary>/// <param name="qrCodeContent">要编码的内容</param>/// <returns>返回二维码位图</returns>public static Bitmap QRCodeEncoderUtil(string qrCodeContent){QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();qrCodeEncoder.QRCodeVersion = 0;Bitmap img = qrCodeEncoder.Encode(qrCodeContent, Encoding.UTF8);//指定utf-8编码, 支持中文return img;}/// <summary>/// 解析二维码/// </summary>/// <param name="bitmap">要解析的二维码位图</param>/// <returns>解析后的字符串</returns>public static string QRCodeDecoderUtil(Bitmap bitmap){QRCodeDecoder decoder = new QRCodeDecoder();string decodedString = decoder.decode(new QRCodeBitmapImage(bitmap), Encoding.UTF8);//指定utf-8编码, 支持中文return decodedString;}}

使用上面两个方法,就可以生成和解析二维码。

我们在程序中调用的时候,就可以这样。

        protected void EncodeClick(object sender, DirectEventArgs e){StringBuilder sb = new StringBuilder();sb.Append(tf6_PERSONIDNUM.Text.Trim() + ";");//个人身份证号sb.Append(tf_DAID.Text.Trim() + ";");sb.Append(tf_DANAME.Text.Trim() + ";");sb.Append(cb_DABUSKIND.Text.Trim() + ";");sb.Append(cb_DAKIND.Text.Trim() + ";");sb.Append(cb_DALEVELCODE.Text.Trim() + ";");sb.Append(df_DABUILDTIME.Text.Trim() + ";");sb.Append(tf_DAORG.Text.Trim() + ";");sb.Append(cb_DASTATUS.Text.Trim() + ";");sb.Append(tf_DABUILDER.Text.Trim() + ";");sb.Append(tf_DABUILDORG.Text.Trim() + ";");Bitmap bitmap = QRCodeOp.QRCodeEncoderUtil((sb.ToString().Trim()));//调用二维码编码方法生成位图string fileName = Server.MapPath("~") + "Images\\QRImages\\" + tf6_PERSONIDNUM.Text.Trim() + ".jpg";bitmap.Save(fileName);//保存位图,文件名为个人身份证号this.QRCodeImage.ImageUrl = "~/Images/QRImages/" + tf6_PERSONIDNUM.Text.Trim() + ".jpg";//显示图片X.Msg.Alert("二维码信息", QRCodeOp.QRCodeDecoderUtil(bitmap)).Show();//调用二维码解码方法弹出编码之前的信息}

这里我在项目中用的是Ext.NET组件。X.Msg.Alert和QRCodeImage.ImageUrl以及DicrectEventArgs这些并不是很重要,感兴趣的读者可以去ext.net网站查阅ext.net的相关知识。

看下效果:

点击按钮,我们把文本框中的信息(含数字、字母、中文、时间等),生成了二维码图片,并反过来进行了解析。

读者可以在此基础之上进一步封装扩展,与WCF等技术结合,提供一个二维码生成的web service。

posted on 2013-12-25 22:11 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/3491471.html

asp.net 生成、解析条形码和二维码相关推荐

  1. java实现电脑截屏+生成解析简单的二维码

    前言 这个是在逛csdn上面看见其他人的,有点兴趣,故于此记录,同时分享给大家.至于其他人的博客我也没有记一下网站,罪过罪过....本来现在也没有这样的需求,但是感觉有点意思,所以记了下来. java ...

  2. java生成、识别条形码和二维码

    一.概述 使用 zxing 开源库 Zxing主要是Google出品的,用于识别一维码和二维码的第三方库 主要类: BitMatrix 位图矩阵 MultiFormatWriter 位图编写器 Mat ...

  3. 碎步二:zxing核心包生成条形码和二维码

    最近闲得无趣,于是写点技术知识放到博客上,希望以后对自己有所帮助.随着时代的发展,二维码已经悄悄的被时代所认可,不管是个人或者公司,二维码受到很多人的认可,如今在互联网上二维码几乎随处可见.废话不多说 ...

  4. 条形码?二维码?生成、解析都在这里!

    二维码生成与解析 一.生成二维码 二.解析二维码 三.生成一维码 四.全部的代码 五.pom依赖 直接上代码: 一.生成二维码 public class demo {private static fi ...

  5. 条形码、二维码的生成与扫描、解析本地二维码

    Github项目解析(十)–>几行代码快速集成二维码扫描库 - CSDN博客 http://blog.csdn.net/qq_23547831/article/details/52037710 ...

  6. java——记录一次条形码、二维码、订单自动生成的制作

    目录 条形码的生成 解决方案 生成结果如下 工具包下载 代码如下 二维码码的生成 解决方案 生成结果如下 工具包下载 代码如下 订单自动生成的制作 效果如下 源代码下载 条形码的生成 解决方案 使用j ...

  7. JAVA使用barcode4j生成条形码和二维码图片以及带logo的二维码,验证码图片

    二维码 1.Maven引入barcode4j依赖 <!-- 条形码生成 --><dependency><groupId>net.sf.barcode4j</g ...

  8. C#利用ZXing.Net生成条形码,二维码和带Logo的二维码

    本文是利用ZXing.Net在WinForm中生成条形码,二维码的小例子,仅供学习分享使用,如有不足之处,还请指正. 什么是ZXing.Net? ZXing是一个开放源码的,用Java实现的多种格式的 ...

  9. ZXing是一个开源Java类库用于解析多种格式的条形码和二维码

    ZXing是一个开源Java类库用于解析多种格式的条形码和二维码 2014年05月07日 17:30:37 shine4j 阅读数 5677 blog迁移至:http://www.micmiu.com ...

最新文章

  1. 如何处理异常? catch Exception OR catch Throwable
  2. 面向对象程序设计第二次作业
  3. wsl(windows上运行linux)安装到非C盘解决方案
  4. c语言时间算法如何以毫秒显示,C语言时间的方法.doc
  5. 读Java并发编程实践记录_原子性_锁_同步容器详解_任务执行
  6. cp命令显示进度条_干货|| Linux常用命令大全
  7. Bootstrap媒体对象
  8. pytest十二:cmd命令行参数
  9. 怎样找到native speaker的感觉
  10. 第一次JAVA课,第一次课堂考,课后感受
  11. 拓端tecdat|采用SPSS Modeler的Web复杂网络对所有腧穴进行关联规则分析
  12. 冷门但好用的 Python 库推荐一波
  13. 【计算机系统】LC-3中断试验
  14. UVa 10019 - Funny Encryption Method
  15. 淘宝天猫1688通过图片搜索到相关产品API(拍立淘以图搜图API接口调用)
  16. eeglab脑电数据预处理:step by step
  17. 软考信息系统监理师:2016年4月8日作业
  18. 第九届“中国软件杯”大学生软件设计大赛总决赛落幕
  19. xp QQ2009无法卸载
  20. C++字符串里提取数字

热门文章

  1. 【Let‘s Go】Go语言入门篇
  2. hdu2065(指数型母函数+快速幂)
  3. CVE-2016-10229分析
  4. Android 插件化原理解析——插件加载机制
  5. Changes in Android 7 Nougat
  6. 利用cache特性检测Android模拟器
  7. JZOJ 3453【NOIP2013中秋节模拟】连通块
  8. hibernate mysql自定义变量_hibernate如何得到mysql的变量
  9. springboot 插入返回id_实战SpringBoot缓存开发
  10. pyqt stop停止线程_面试官:如何终止线程?有几种方式?