.NET 使用 ZXing.Net 生成二维码,并识别

本文介绍了如何使用ZXing.Net库在.NET中生成二维码和EAN-13条形码,包括编码步骤和使用AlternateBitmapRenderer渲染图像。同时,展示了如何解码图片中的二维码和条形码内容。
部署运行你感兴趣的模型镜像

前言

前面已经分享给很多创建二维码,条形码。。。等一系列的方式 各有优缺点,暂时不做评价。今天推荐ZXing.Net 。也是比较全面的一种方式,还支持解码

编码

想要条形码,参考文章:.NET 使用 ZXing.Net 生成带有识别符的 EAN-13 条码

var qr = new QRCodeWriter() { }; // 创建一个QRCodeWriter实例用于生成QR Code
var render = new AlternateBitmapRenderer(); // 创建一个AlternateBitmapRenderer实例用于渲染条形码图像

var contents = "http://weixin.qq.com/r/qzj377TEKulVrfCM9225"; // 条形码的内容,需要根据实际情况进行设置

// 使用QRCodeWriter对象的encode方法生成QR Code的位矩阵,指定条形码格式为QR_CODE,大小为400x400
var qrbitmatrix = qr.encode(contents, ZXing.BarcodeFormat.QR_CODE, 400, 400);

// 使用AlternateBitmapRenderer对象的Render方法渲染条形码图像,指定条形码格式为EAN_13,内容为contents,
// 同时使用EncodingOptions设置图像的宽度为400,高度为400
var bitmap = render.Render(qrbitmatrix, ZXing.BarcodeFormat.QR_CODE, contents, new EncodingOptions { Width = 400, Height = 400 });

// 将生成的Bitmap对象保存为图片文件,文件名为"image.jpg",格式为JPEG
bitmap.Save("qr-image.jpg", ImageFormat.Jpeg);
a8aaa02836ff3f10e2d74bb28d7e938d.png

解码

csharp代码

// create a barcode reader instance
IBarcodeReader reader = new BarcodeReader();  
// 加载图片文件
Bitmap image = new Bitmap("D:\\PrideJoy\\Zxing.Demo\\Zxing.demo\\bin\\Debug\\net7.0\\qr-image.jpg");

// 获取rawRGB数据
Rectangle rect = new Rectangle(0, 0, image.Width, image.Height);
System.Drawing.Imaging.BitmapData bmpData = image.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly, image.PixelFormat);
IntPtr ptr = bmpData.Scan0;
int bytes = Math.Abs(bmpData.Stride) * image.Height;
byte[] rawRGB = new byte[bytes];
System.Runtime.InteropServices.Marshal.Copy(ptr, rawRGB, 0, bytes);
image.UnlockBits(bmpData);

// 获取格式(format)
RGBLuminanceSource.BitmapFormat format;
switch (image.PixelFormat)
{
    case System.Drawing.Imaging.PixelFormat.Format8bppIndexed:
        format = RGBLuminanceSource.BitmapFormat.Gray8;
        break;
    case System.Drawing.Imaging.PixelFormat.Format16bppGrayScale:
        format = RGBLuminanceSource.BitmapFormat.Gray16;
        break;
    case System.Drawing.Imaging.PixelFormat.Format24bppRgb:
        format = RGBLuminanceSource.BitmapFormat.RGB24;
        break;
    case System.Drawing.Imaging.PixelFormat.Format32bppRgb:
        format = RGBLuminanceSource.BitmapFormat.RGB32;
        break;
    case System.Drawing.Imaging.PixelFormat.Format32bppArgb:
        format = RGBLuminanceSource.BitmapFormat.ARGB32;
        break;
    // 其他格式的处理
    default:
        format = RGBLuminanceSource.BitmapFormat.Unknown;
        break;
}

// 获取宽度(width)和高度(height)
int width = image.Width;
int height = image.Height;
var result = reader.Decode(rawRGB,width,height, format);
// do something with the result
if (result != null)
{
    Console.WriteLine("内容为:"+result.Text);
}
3c4f4afe90fe2b1abff82d3ef0dbc84b.png
识别的二维码

条形码也是同样的方式

9da6d644f2df9467844e00dccf6e2f7e.png
条形码的识别

参考:

  • • 官方地址


您可能感兴趣的与本文相关的镜像

Seed-Coder-8B-Base

Seed-Coder-8B-Base

文本生成
Seed-Coder

Seed-Coder是一个功能强大、透明、参数高效的 8B 级开源代码模型系列,包括基础变体、指导变体和推理变体,由字节团队开源

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值