ZXing.Net 是一款强大且开源的二维码与条形码处理库,支持生成与识别功能,适配 .NET Framework、.NET Core、Xamarin 等多种平台。以下内容将一步步教你如何用它生成二维码图像并灵活应用。
准备工作 —— 安装 ZXing.Net
在项目中通过 NuGet 安装 ZXing.Net,以及适配不同图形库的绑定包(如需使用 Bitmap):
- 安装主要库:ZXing.Net
- 若使用系统绘图(System.Drawing),还需安装 ZXing.Net.Bindings.Windows.Compatibility
安装后,即可在控制台、WinForms、ASP.NET 等项目中使用。
生成二维码图片(PNG)
以下是生成二维码的基本步骤:
using ZXing;
using ZXing.QrCode;
using System.Drawing;
using System.Drawing.Imaging;
string text = "Hello, ZXing.Net!";
var options = new QrCodeEncodingOptions {
DisableECI = true,
CharacterSet = "UTF-8",
Width = 300,
Height = 300
};
var writer = new BarcodeWriter {
Format = BarcodeFormat.QR_CODE,
Options = options
};
using Bitmap bitmap = writer.Write(text);
bitmap.Save("qrcode.png", ImageFormat.Png);
这段代码设置了二维码尺寸、字符编码等参数,生成一张 PNG 格式的二维码图像。
高级用法:SkiaSharp 输出与跨平台支持
若你的项目使用 SkiaSharp 而非 System.Drawing,可结合 ZXing.Net 和 SkiaSharp 输出二维码:
using ZXing;
using ZXing.SkiaSharp;
using SkiaSharp;
using System.IO;
SKBitmap GenerateQr(string url, int width, int height) {
var options = new QrCodeEncodingOptions {
DisableECI = true,
CharacterSet = "UTF-8",
Width = width,
Height = height
};
var writer = new BarcodeWriter<SKBitmap> {
Format = BarcodeFormat.QR_CODE,
Options = options
};
return writer.Write(url);
}
var bmp = GenerateQr("https://example.com", 500, 500);
using var stream = new MemoryStream();
bmp.Encode(stream, SKEncodedImageFormat.Png, 100);
File.WriteAllBytes("qrcode_skia.png", stream.ToArray());
采用 SkiaSharp 渲染的方式易于在跨平台与移动项目中使用,支持灵活输出并注重性能。
自定义样式:背景色、前景色与边距
你可以在生成二维码时进一步定制样式。例如在 Unity 或类似环境中,可自定义色彩与边距:
using ZXing;
using ZXing.QrCode;
using ZXing.Rendering;
using UnityEngine;
var writer = new BarcodeWriter {
Format = BarcodeFormat.QR_CODE,
Options = new QrCodeEncodingOptions {
Width = 256,
Height = 256
},
Renderer = new Color32Renderer {
Background = new Color32(255, 0, 0, 0), // 透明背景
Foreground = new Color32(0, 255, 0, 255) // 绿色二维码主体
}
};
Texture2D qrTex = new Texture2D(256, 256);
qrTex.SetPixels32(writer.Write("Custom Color QR"));
qrTex.Apply();
通过 Color32Renderer,你可以设置二维码前景与背景的颜色,甚至实现透明背景的效果。
生成 SVG 格式二维码
如果你需要输出矢量格式,可以使用 BarcodeWriterSvg 来生成 SVG 代码:
using ZXing;
using ZXing.Rendering;
var svgWriter = new BarcodeWriterSvg {
Format = BarcodeFormat.QR_CODE,
Options = new QrCodeEncodingOptions {
Width = 300,
Height = 300,
PureBarcode = true
},
Renderer = new SvgRenderer()
};
var svgImage = svgWriter.Write("SVG QR");
string svgContent = svgImage.Content;
// 可将 svgContent 返回给客户端或保存为 .svg 文件
生成的 SVG 内容可直接嵌入网页或进一步打印,具备无损缩放的优点。
在 ASP.NET MVC 中集成示例
用 ZXing.Net 构建一个简单的二维码生成 Web 页面:
- Controller 接收用户输入文本,使用 BarcodeWriterPixelData 生成二维码字节流。
- 渲染成 Base64 后在 View 中内嵌显示。
该方案适合快速构建二维码 Web 生成器。
总结
- 安装:通过 NuGet 安装 ZXing.Net 及必要绑定包。
- 基本生成:使用 BarcodeWriter 和 QrCodeEncodingOptions 输出 PNG。
- 跨平台支持:结合 SkiaSharp 使用 BarcodeWriter<SKBitmap>。
- 样式自定义:利用 Color32Renderer 改变二维码颜色或背景。
- 矢量输出:使用 BarcodeWriterSvg 生成 SVG 格式。
- Web 集成:可直接在 ASP.NET MVC 中接受输入并实时渲染二维码。
ZXing.Net 入门简单、功能强大,适用于多种 .NET 技术栈。希望这篇教程能帮你在项目中轻松集成二维码生成功能。