当前位置: 首页 > news >正文

C# ZXing 二维码,条形码生成与识别

C# ZXing 二维码条形码生成识别

  • 安装ZXing
  • 使用ZXing
  • 生成条形码
  • 生成二维码
  • 生成带Logo的二维码
  • 识别二维码、条形码

安装ZXing

NuGet搜索ZXing安装ZXing.Net包
在这里插入图片描述

使用ZXing

using ZXing;
using ZXing.Common;
using ZXing.QrCode;
using ZXing.QrCode.Internal;

生成条形码

/// <summary>
/// 生成条形码
/// </summary>
/// <param name="text"></param>
static void GenerateBarCode(string text)
{ BarcodeWriter writer = new BarcodeWriter();writer.Format = BarcodeFormat.CODE_128;EncodingOptions options = new EncodingOptions(){Width = 150,Height = 50,Margin = 2,};writer.Options = options;Bitmap map = writer.Write(text);string filename = @"D:\2.png";map.Save(filename, ImageFormat.Png);map.Dispose();
}

生成二维码

 /// <summary>/// 生成二维码/// </summary>/// <param name="text"></param>static void GenerateQRCode(string text){BarcodeWriter writer = new BarcodeWriter();writer.Format = BarcodeFormat.QR_CODE;QrCodeEncodingOptions options = new QrCodeEncodingOptions();options.DisableECI = true;// 设置内容字符编码options.CharacterSet = "UTF-8";// 设置二维码的宽度高度options.Width = 200;options.Height = 200;// 设置二维码的边距,单位不是固定像素options.Margin = 1;writer.Options = options;Bitmap map = writer.Write(text);string filename = @"D:\1.png";map.Save(filename, ImageFormat.Png);map.Dispose();}

生成带Logo的二维码

/// <summary>
/// 生成带Logo图片的二维码
/// </summary>
/// <param name="text"></param>
static void GenerateQRCodeWithLoge(string text) 
{// Logo 图片Bitmap logo = new Bitmap(@"D:\logo.png");// 构造二维码写码器MultiFormatWriter writer = new MultiFormatWriter();Dictionary<EncodeHintType, object> hint = new Dictionary<EncodeHintType, object>();hint.Add(EncodeHintType.CHARACTER_SET, "UTF-8");hint.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);// 生成二维码BitMatrix bm = writer.encode(text, BarcodeFormat.QR_CODE, 300, 300, hint);BarcodeWriter barcodeWriter = new BarcodeWriter();Bitmap map = barcodeWriter.Write(bm);// 获取二维码实际尺寸(去掉二维码两边空白后的实际尺寸)int[] rectangle = bm.getEnclosingRectangle();// 计算插入logo图片的大小位置int middleW = Math.Min((int)(rectangle[2] / 3.5), logo.Width);int middleH = Math.Min((int)(rectangle[3] / 3.5), logo.Height);int middleL = (map.Width - middleW) / 2;int middleT = (map.Width - middleH) / 2;// 将img转换成bmp格式,否则后面无法创建Graphics对象Bitmap bmpimg = new Bitmap(map.Width, map.Height, PixelFormat.Format32bppArgb);using (Graphics g = Graphics.FromImage(bmpimg)){ g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;g.DrawImage(map, 0, 0);}// 将二维码插入图片Graphics myGraphics = Graphics.FromImage(bmpimg);// 白底myGraphics.FillRectangle(Brushes.White, middleL, middleT, middleW, middleH);myGraphics.DrawImage(logo, middleL, middleT, middleW, middleH);// 保存生成图片bmpimg.Save(@"D:\logo_qrcode.png", ImageFormat.Png);}

识别二维码、条形码

/// <summary>
/// 识别二维码、条形码
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
static string ReadBarCode(string filename)
{ BarcodeReader reader = new BarcodeReader();reader.Options.CharacterSet = "UTF-8";Bitmap map = new Bitmap(filename);Result result = reader.Decode(map);map.Dispose();return result == null ? "" : result.Text;
}
http://www.lryc.cn/news/227234.html

相关文章:

  • [vim]Python编写插件学习笔记1 - 开始
  • 深入理解JVM虚拟机第二十篇:静态变量和局部变量的对比以及栈帧对垃圾回收的意义以及JVM中栈帧与堆内对象的应用关系图示
  • 【计算机网络基础实验】实验二 有线IP互通网络实践
  • 【Orangepi Zero2 全志H616】驱动串口实现Tik Tok—VUI(语音交互)
  • 【Spring】静态代理
  • tomcat web.xml文件中servlet的load-on-startup
  • 记chrome打不开网址,无法搜索问题
  • Spring面试题:(五)Spring注解开发@Component,@Autowired,@Bean,@Configuration
  • 【Qt-23】ui界面设计-ToolBar
  • nodejs 异步架构
  • 腾讯云优惠券介绍、作用、领取方法及使用教程
  • 浅谈智能变电站自动化系统的应用与产品选型
  • 适用于初学者的 .NET MAUI
  • Web3项目灵魂所在之智能合约编写(Web3项目一实战之二)
  • python-jupyter实现OpenAi语音对话聊天
  • 恒源云之oss上传数据、云台下载数据
  • 大数据-之LibrA数据库系统告警处理(ALM-12039 GaussDB主备数据不同步)
  • 【左程云算法全讲6】链表相关
  • 从HDFS到对象存储,抛弃Hadoop,数据湖才能重获新生?
  • 灰度与二值化
  • No183.精选前端面试题,享受每天的挑战和学习
  • [C国演义] 第十八章
  • 发送失败的RocktMQ消息,你遇到过吗?
  • Unity中全局光照GI的总结
  • 毫米波雷达技术在自动驾驶中的关键作用:安全、精准、无可替代
  • Jetson平台180度鱼眼相机畸变校正调试记录
  • axios请求的问题
  • 【pandas刷题系列】Leetcode Problem: [595. 大的国家]
  • 【打卡】牛客网:BM46 最小的K个数
  • Android各类View触摸监听器失效