推荐一款.NET开源、功能强大的二维码生成类库
前言
在日常开发需求中,生成二维码以分享文本内容或跳转至指定网站链接等场景是比较常见的。今天大姚给大家分享一款.NET开源(MIT License)、免费、简单易用、功能强大的二维码生成类库:QrCodeGenerator。
项目特点
- 跨平台兼容性: 支持.NET Standard 2.0及更高版本,因此可以运行在大多数现代.NET平台上,包括.NET Core、.NET Framework、Mono等,同时也支持.NET 6在所有平台上的运行。
- 丰富的输出格式: 提供了多种输出格式,包括QR符号的原始模块/像素、SVG和XAML路径、BMP位图等。
- 高效的文本编码: 对数字和特殊字母数字文本进行编码,所占用的空间小于一般文本。
- 灵活的参数设置: 允许开发者指定掩码模式、错误纠正级别以及数据段列表等参数,提供了高度的灵活性和定制性。
- 使用示例代码丰富: 项目源码提供了在WinForms、WPF、WinUI、ASP.NET Core等环境中使用示例代码。
图像生成扩展
从.NET 6开始,System.Drawing只支持Windows操作系统,无法兼容跨平台。因此ToBitmap()
已被删除,现在以方法扩展的形式提供了三个选项。
选择下面的一个映像库,将NuGet依赖项添加到项目中,并且将相应的QrCodeBitmapExtensions.cs文件复制到项目中。
控制台应用中快速使用
创建控制台应用
创建名为:QrCodeGeneratorExercise
的控制台应用!
NuGet包安装
在NuGet中搜索:Net.Codecrete.QrCodeGenerator
和SkiaSharp
类库安装。
生成二维码并保存为png
var test1 = QrCode.EncodeText("追逐时光者!!!", QrCode.Ecc.Medium);
test1.SaveAsPng("test1-qr-code.png", 10, 3);
生成带颜色的二维码并保存为png
var test2 = QrCode.EncodeText("追逐时光者!!!", QrCode.Ecc.High);
test2.SaveAsPng("test2-qr-code.png", 12, 4,
foreground: SKColor.Parse("#628bb5"),
background: SKColor.Parse("#ffffff"));
生成二维码并保存为svg
var test3 = QrCode.EncodeText("追逐时光者!!!", QrCode.Ecc.Medium);
var svg = test3.ToSvgString(4);
File.WriteAllText("test3-qr-code.svg", svg, Encoding.UTF8);
生成带颜色的二维码并保存为svg
var test4 = QrCode.EncodeText("追逐时光者!!!", QrCode.Ecc.Medium);
var svg1 = test4.ToSvgString(4, "#98b2cd", "#ffffff");
File.WriteAllText("test4-qr-code.svg", svg1, Encoding.UTF8);
项目源代码
QrCodeGenerator提供了丰富的示例代码,展示了如何在WinForms、WPF、WinUI、ASP.NET Core等环境中使用。
WinForms运行效果
打开Demo-WinForms
项目运行:
WPF运行效果
打开Demo-WindowsPresentationFoundation
项目运行:
ASP.NET Core运行效果
打开ASP.NET-Core
项目运行:
项目源码地址
更多项目实用功能和特性欢迎前往项目开源地址查看,别忘了给项目一个Star支持。
- 开源地址:https://github.com/manuelbl/QrCodeGenerator
- 在线文档:https://codecrete.net/QrCodeGenerator/api/index.html
- 示例源码:https://github.com/YSGStudyHards/DotNetExercises/tree/master/QrCodeGeneratorExercise
优秀项目和框架精选
该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没)。
推荐一款.NET开源、功能强大的二维码生成类库的更多相关文章
- [开源]C#二维码生成解析工具,可添加自定义Logo
二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存更多的信息,也能表示更多的数据类型:比如:字 ...
- 二维码生成与windows系统IP查询功能
一个木函是一款强大的手机软件,里面囊括了很多小功能,每一个都基本可以堪称小程序.那么,这些小功能具体是怎么实现的呢?让我们来一起来探讨二维码生成.IP查询这两个功能吧! 一.二维码生成 首先,我们来看 ...
- [开源]C#二维码生成解析工具,可添加自定义Logo (转)
二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存更多的信息,也能表示更多的数据类型:比如:字 ...
- java二维码生成-谷歌(Google.zxing)开源二维码生成学习及实例
java二维码生成-谷歌(Google.zxing)开源二维码生成的实例及介绍 我们使用比特矩阵(位矩阵)的QR码编码在缓冲图片上画出二维码 实例有以下一个传入参数 OutputStream ou ...
- IOS开发小功能2:二维码扫描界面的设计(横线上下移动)
效果图如上,实现的是一个二维码扫描界面. 下面我贴出线条上下移动的代码,至于二维码的代码是用的第三方库. 首先是整体的结构: 注意下面的库文件一个都不能少,否则会报错. TLTiltHighlight ...
- (转)QRCODE二维码介绍及常用控件推荐
什么是QR Code码? QR Code码是由日本Denso公司于1994年9月研制的一种矩阵二维码符号,它具有一维条码及其它二维条码所具有的信息容量大.可靠性高.可表示汉字及图象多种文字信息.保密防 ...
- 个性二维码开源专题<介绍篇>
由C#编写的个性二维码底层,已应用到 码晒客/疯狂创意二维码等项目上,并获得多项软件著作专利. 疯狂创意二维码 疯狂创意二维码是可用于生成风格独特的个性化二维码生成器,用户可以将目标信息输入到二维码生 ...
- Android高级控件(三)—— 使用Google ZXing实现二维码的扫描和生成相关功能体系
Android高级控件(三)-- 使用Google ZXing实现二维码的扫描和生成相关功能体系 摘要 现在的二维码可谓是烂大街了,到处都是二维码,什么都是二维码,扫一扫似乎已经流行到习以为常了,今天 ...
- Android高级控件(三)—— 使用Google ZXing实现二维码的扫描和生成相关功能体系
Android高级控件(三)-- 使用Google ZXing实现二维码的扫描和生成相关功能体系 摘要 如今的二维码可谓是烂大街了.到处都是二维码.什么都是二维码,扫一扫似乎已经流行到习以为常了,今天 ...
- 个性二维码开源专题<前背景>
//设置图片资源 private Image imgAgo; public override void SetParam() { base.SetParam(); // 读取前背景 string _i ...
随机推荐
- golang 所有关键字的列表及释义归类
golang 所有关键字的列表及释义归类,截至1.18版本. [控制结构] if : 条件语句,基于布尔表达式的值决定是否执行特定的代码块. else. else if : 用在 if 语句 ...
- 简单的css3头像旋转与3D旋转效果
Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 简单的css3头像旋转与3D旋转效果 日期:2017-7- ...
- Mysql 聚合函数嵌套使用
Mysql 聚合函数嵌套使用 目的:Mysql 聚合函数嵌套使用 聚合函数不可以直接嵌套使用,比如: max(count(*)) 思路:但是可以嵌套子查询使用(先分组取出count值, 再将count ...
- CSS和CSS3(背景,图片,浮动等)
CSS和CSS3背景图片 CSS的背景,无法伸缩图片. <!DOCTYPE html> <html lang="en"> <head> < ...
- BI小班课程表:PowerBI、finebi、quickbi,每周开课
为了帮助更多BI的友友更好的接触BI,并应用于实践工作中,我决定将我这些年的工作经验和付费咨询的实际经验,拿出一部分基础并且实用的知识和方法整理成课程.其中 PowerBI十节课,计划20个小时: F ...
- Vue手稿4
- C# NPOI 读取Excel数据,附案例源码
项目结构 注意:需要引入NPOI类库 C#代码 Form1.cs using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System; u ...
- JDK1.8新特性Lambda表达式简化if-else里都有for循环的优化方式
在日常开发过程当中,能把代码写出来,不一定就意味着能把代码写好,说不准,所写的代码在他人看来,其实就是一坨乱七八糟的翔,因此,代码简化尤其重要,我曾经遇到过这样一个类型的代码,即if-else里都有相 ...
- ES6拼接数组与小程序本地存储
拼接数组 ES6扩展运算符[三个点(...)将一个数组转为用逗号分隔的参数序列] goodsList: [...goodsList, ...goods] 本地存储 // 把接口数据存入本地存储中 wx ...
- 一位有着近 10 年 iOS 开发经验的全职爸爸如何高效管理时间?
名字: Mindr 开发者 / 团队: Florian Vates 平台: iOS, iPadOS, Android 正在开发中 请简要介绍下这款产品 有没有发现自己总是不断推迟待办事项的通知? Mi ...