网站首页 > 技术教程 正文
ZXing是一个开源项目,由Java实现,主要提供二维码的生成和识别功能。支持类型有:QR Code, PDF 417, EAN, UPC, Aztec, Data Matrix, Codabar等。后续作者移植到.NET平台,进行 了许多优化和改进,在CSharp中可以直接使用 ZXing.Net 库来实现二维码的生成和解析功能。
应用步骤如下:
1. 安装 ZXing.Net 库:
通过 NuGet 包管理器在 Visual Studio 中安装 “ZXing.Net” 包和“ZXing.Net Bindings for Windows Compatibility”包。
还可以使用包管理器控制台执行以下命令:
Install-Package ZXing.Net
Install-Package ZXing.Net Bindings for Windows Compatibility
2. 生成二维码:
使用 ZXing 的“BarcodeWriter”类来生成二维码。可以设置二维码的格式、大小、前景色和背景色等。
引入命名空间
using ZXing;
using ZXing.Common;
using ZXing.QrCode;
using ZXing.QrCode.Internal;
using ZXing.Windows.Compatibility;
生成Bitmap,可以设置二维码的高度,宽度,编码格式等信息。
public static Bitmap CreateQrCode1(string data, int width, int height)
{
var writer = new BarcodeWriter
{
Format = BarcodeFormat.QR_CODE,
Options = new QrCodeEncodingOptions
{
DisableECI = true,
CharacterSet = "UTF-8",
Width = width,
Height = height,
Margin = 0,
ErrorCorrection = ErrorCorrectionLevel.L
}
};
var bitmap = writer.Write(data);
return bitmap;
}
将Bitmap转为ImageSource,可在Image中显示。
public ImageSource ChangeBitmapToImageSource(Bitmap bitmap)
{
IntPtr hBitmap = bitmap.GetHbitmap();
return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
hBitmap,
IntPtr.Zero,
Int32Rect.Empty,
BitmapSizeOptions.FromEmptyOptions());
}
3. 集成到 WPF 或 Windows Forms 应用程序:
可以在 WPF 或 Windows Forms 应用程序中显示生成的二维码。可以将生成的二维码图像设置为图片框(PictureBox)的图像,或者在 WPF 中使用“Image” 控件显示。
WPF的xaml
<Image x:Name="imgQRCode" Width="100" Height="100"/>
C#实现
imgQRCode.Source = ChangeBitmapToImageSource(CreateQrCode1("Hello World", 100, 100));
4. 解析二维码:
使用 ZXing 的“BarcodeReader” 类来解析二维码图像。你可以处理图像文件或图像流。
public string DecodeQRCode(string filePath)
{
// 创建一个BitMatrix对象,该对象表示二维码的位矩阵
BitMatrix bitMatrix = new BitMatrix();
// 使用文件流读取二维码图片
using (FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedSource(stream)));
// 创建二维码解码器
QRCodeReader qrCodeReader = new QRCodeReader();
// 解码二维码
Result result = qrCodeReader.Decode(binaryBitmap, new ResultPointCallback(point => { }));
// 获取解码结果
string resultText = result.GetText();
return resultText;
}
}
调用“DecodeQRCode”方法
string filePath = "path_to_your_qrcode_image.png";
string decodedText = DecodeQRCode(filePath);
在这个例子中,定义了一个DecodeQRCode方法,它接受二维码图片的文件路径作为输入,并返回解码后的文本。我们使用BinaryBitmap类来读取二维码图片的位矩阵,然后使用QRCodeReader类来解码二维码。最后输出文本。在使用时替换filePath变量的值为实际二维码图片文件路径。
通过上述步骤,使用 C# 和 ZXing.Net ,可以轻松实现二维码的读写功能。另外,这个库提供了许多高级选项,比如定制生成的二维码,包括调整其大小、边距、错误纠正等级等。
- 上一篇: Csharp 进度条的使用
- 下一篇: 微软Csharp中的Redis介绍(一)
猜你喜欢
- 2024-11-19 C# 文字识别(OCR)
- 2024-11-19 c#手机开发Maui实现条形码扫描
- 2024-11-19 CSharp学习笔记(7)
- 2024-11-19 CSharp学习笔记(10)
- 2024-11-19 37岁辞职自学C#上位机开发通信类库第2天:进度记录
- 2024-11-19 CSharp学习笔记(16)
- 2024-11-19 python调用CSharp动态库
- 2024-11-19 C# 读取CSV文件
- 2024-11-19 CSharp学习笔记(14)
- 2024-11-19 C#委托—马工教你轻松玩转委托
你 发表评论:
欢迎- 最近发表
-
- 阿里P8大佬总结的Nacos入门笔记,从安装到进阶小白也能轻松学会
- Linux环境下,Jmeter压力测试的搭建及报错解决方法
- Java 在Word中合并单元格时删除重复值
- 解压缩软件哪个好用?4款大多数人常用的软件~
- Hadoop高可用集群搭建及API调用(hadoop3高可用)
- lombok注解@Data没有toString和getter、setter问题
- Apache Felix介绍(apache fineract)
- Spring Boot官方推荐的Docker镜像编译方式-分层jar包
- Gradle 使用手册(gradle详细教程)
- 字节二面:为什么SpringBoot的 jar可以直接运行?
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)