.NET C#利用ZXing生成、识别二维码/条形码

作者:daisy 时间:2022-03-25 12:20:45 

一、首先下载 ZXing.Net

地址是:http://zxingnet.codeplex.com/releases/view/117068

然后将对应版本 .dll 拖入项目中,再引用之。

主要是用 BarcodeWriter、BarcodeReader。

二、生成二维码

.NET 平台的代码始终要简单些。


QrCodeEncodingOptions options = new QrCodeEncodingOptions();
options.CharacterSet = "UTF-8";
options.DisableECI = true; // Extended Channel Interpretation (ECI) 主要用于特殊的字符集。并不是所有的扫描器都支持这种编码。
options.ErrorCorrection = ZXing.QrCode.Internal.ErrorCorrectionLevel.H; // 纠错级别
options.Width = 300;
options.Height = 300;
options.Margin = 1;
// options.Hints,更多属性,也可以在这里添加。

BarcodeWriter writer = new BarcodeWriter();
writer.Format = BarcodeFormat.QR_CODE;
writer.Options = options;

Response.Clear();
using (Bitmap bmp = writer.Write("http://www.cftea.com")) // Write 具备生成、写入两个功能
{
MemoryStream ms = new MemoryStream();
{
 bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png);

Response.ContentType = "image/png";
 Response.BinaryWrite(ms.ToArray());
}
}
Response.End();

纠错级别:

  1.     L - 约 7% 纠错能力。

  2.     M - 约 15% 纠错能力。

  3.     Q - 约 25% 纠错能力。

  4.     H - 约 30% 纠错能力。

三、生成条形码


QrCodeEncodingOptions options = new QrCodeEncodingOptions();
options.CharacterSet = "UTF-8";
options.Width = 300;
options.Height = 50;
options.Margin = 1;
options.PureBarcode = false; // 是否是纯码,如果为 false,则会在图片下方显示数字

BarcodeWriter writer = new BarcodeWriter();
writer.Format = BarcodeFormat.CODE_128;
writer.Options = options;

Response.Clear();
using (Bitmap bmp = writer.Write("12345678"))
{
MemoryStream ms = new MemoryStream();
{
 bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png);

Response.ContentType = "image/png";
 Response.BinaryWrite(ms.ToArray());
}
}
Response.End();

四、识别二维码、条形码


BarcodeReader reader = new BarcodeReader();
reader.Options.CharacterSet = "UTF-8";
using (Bitmap bmp = new Bitmap("D:\\qr.png"))
{
Result result = reader.Decode(bmp);
Response.Write(result.Text);
}

总结

好了,以上就是这篇文章的全部内容了,如果要改变背景颜色、画头像,可以直接在 Bitmap 中画,希望本文的内容对大家的学习或者工作能带来一定的帮助

标签:.net,c#,zxing,二维码
0
投稿

猜你喜欢

  • java HashMap和HashTable的区别详解

    2023-08-10 18:41:56
  • java实现科研信息管理系统

    2022-05-13 02:49:41
  • Mybatis的详细使用教程

    2022-02-15 21:08:20
  • 详解SpringBoot统一响应体解决方案

    2023-03-08 08:54:13
  • SpringBoot配置GlobalExceptionHandler全局异常处理器案例

    2023-06-11 12:14:36
  • Java web spring异步方法实现步骤解析

    2023-12-19 03:14:58
  • java显示当前运行时的参数(java运行参数)

    2023-09-07 10:03:22
  • 浅谈java并发之计数器CountDownLatch

    2023-03-21 23:42:59
  • C#中 MessageBox的使用技巧

    2023-06-25 16:15:48
  • Spring中的aware接口详情

    2023-11-29 10:48:29
  • 妙解Java中的回调机制(CallBack)

    2022-07-15 15:25:31
  • MyBatis数据脱敏的实现方案介绍

    2021-10-06 19:22:34
  • Unity Shader实现新手引导遮罩镂空效果

    2022-08-18 16:25:12
  • 使用IDEA异常断点来定位java.lang.ArrayStoreException的问题

    2022-06-14 00:43:18
  • java调用外部程序的方法及代码演示

    2023-11-13 22:42:55
  • SpringBoot上传文件大小受限问题的解决办法

    2023-04-19 09:46:16
  • Java工程中使用Mybatis (工程结合Mybatis,数据结合Swing使用))

    2023-05-27 11:52:38
  • Mybatis-Plus自动填充更新操作相关字段的实现

    2022-01-14 20:43:01
  • java求数组元素重复次数和java字符串比较大小示例

    2023-08-04 22:20:02
  • Java 数据结构与算法系列精讲之哈希算法实现

    2022-01-10 23:56:07
  • asp之家 软件编程 m.aspxhome.com