.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();
纠错级别:
L - 约 7% 纠错能力。
M - 约 15% 纠错能力。
Q - 约 25% 纠错能力。
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,二维码
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
java HashMap和HashTable的区别详解
2023-08-10 18:41:56
java实现科研信息管理系统
2022-05-13 02:49:41
![](https://img.aspxhome.com/file/2023/9/67009_0s.jpg)
Mybatis的详细使用教程
2022-02-15 21:08:20
详解SpringBoot统一响应体解决方案
2023-03-08 08:54:13
SpringBoot配置GlobalExceptionHandler全局异常处理器案例
2023-06-11 12:14:36
![](https://img.aspxhome.com/file/2023/6/60626_0s.png)
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
![](https://img.aspxhome.com/file/2023/2/66702_0s.jpg)
C#中 MessageBox的使用技巧
2023-06-25 16:15:48
![](https://img.aspxhome.com/file/2023/2/85682_0s.webp)
Spring中的aware接口详情
2023-11-29 10:48:29
![](https://img.aspxhome.com/file/2023/9/60689_0s.webp)
妙解Java中的回调机制(CallBack)
2022-07-15 15:25:31
MyBatis数据脱敏的实现方案介绍
2021-10-06 19:22:34
![](https://img.aspxhome.com/file/2023/2/68742_0s.png)
Unity Shader实现新手引导遮罩镂空效果
2022-08-18 16:25:12
![](https://img.aspxhome.com/file/2023/8/77228_0s.jpg)
使用IDEA异常断点来定位java.lang.ArrayStoreException的问题
2022-06-14 00:43:18
![](https://img.aspxhome.com/file/2023/9/75499_0s.png)
java调用外部程序的方法及代码演示
2023-11-13 22:42:55
SpringBoot上传文件大小受限问题的解决办法
2023-04-19 09:46:16
![](https://img.aspxhome.com/file/2023/9/63629_0s.jpg)
Java工程中使用Mybatis (工程结合Mybatis,数据结合Swing使用))
2023-05-27 11:52:38
![](https://img.aspxhome.com/file/2023/8/78038_0s.png)
Mybatis-Plus自动填充更新操作相关字段的实现
2022-01-14 20:43:01
java求数组元素重复次数和java字符串比较大小示例
2023-08-04 22:20:02
Java 数据结构与算法系列精讲之哈希算法实现
2022-01-10 23:56:07
![](https://img.aspxhome.com/file/2023/3/71683_0s.gif)