C# 实现简单的二维码生成工具

简介: 基于 ZXing.Net 库生成二维码,支持自定义尺寸与保存路径,使用简便,需先安装对应 NuGet 包。

基于 ZXing.Net 库生成二维码,支持自定义尺寸和保存路径。

using ZXing;
using ZXing.QrCode;
using ZXing.QrCode.Internal;
public class QrCodeGenerator
{
    // 生成二维码并保存为图片
    public static bool GenerateQrCode(string content, string outputPath, int width = 300, int height = 300)
    {
        try
        {
            var writer = new BarcodeWriterPixelData {
                Format = BarcodeFormat.QR_CODE,
                Options = new QrCodeEncodingOptions {
                    Width = width,
                    Height = height,
                    Margin = 1,
                    ErrorCorrection = ErrorCorrectionLevel.H
                }
            };
            var pixelData = writer.Write(content);
            using (var bitmap = new System.Drawing.Bitmap(pixelData.Width, pixelData.Height))
            using (var ms = new System.IO.MemoryStream())
            {
                var bitmapData = bitmap.LockBits(/* 省略锁定参数 */);
                try { /* 写入像素数据 */ }
                finally { bitmap.UnlockBits(bitmapData); }
                bitmap.Save(outputPath, System.Drawing.Imaging.ImageFormat.Png);
            }
            Console.WriteLine("二维码生成成功!");
            return true;
        }
        catch (Exception ex)
        {
            Console.WriteLine($"生成失败: {ex.Message}");
            return false;
        }
    }
    // 调用示例
    public static void TestQrGenerate()
    {
        GenerateQrCode("https://www.example.com", "qrcode.png", 300, 300);
    }
}

注意:需安装 ZXing.Net NuGet 包。

相关文章
|
7月前
|
存储 安全 BI
硬盘有坏道怎么办?硬盘坏道如何屏蔽?
本文简单介绍一下坏道的类型,然后介绍检测工具、坏道屏蔽方法,感兴趣的用户可以尝试。
|
2天前
|
安全 C#
C# 泛型:实现类型安全的通用代码
泛型通过类型参数(如T)实现类型通用性,可定义不指定具体类型的类或方法,使用时再确定类型。示例中,Swap<T>方法可交换任意同类型变量,List<T>集合避免装箱拆箱,提升性能与安全。
|
2天前
|
C#
C# 字符串操作:常用方法汇总(含案例)
C# 提供丰富的字符串操作方法,如拼接、截取、替换和判断等。本文通过工具类案例演示如何高效处理字符串,提升开发效率与代码可读性。
|
2天前
|
C#
C# 异步编程:async/await 简化异步操作
`async/await` 是 C# 5.0+ 的异步编程语法糖,简化异步操作(如网络请求、文件读写),避免回调地狱。通过 `async` 标记异步方法,`await` 等待任务完成而不阻塞主线程,提升程序响应性和性能,适用于 I/O 密集型场景。
|
2天前
|
安全 C#
C# 事件(Event):基于委托的观察者模式
事件是基于委托的封装机制,仅支持订阅与取消订阅,确保成员安全。常用于实现观察者模式,如订单状态变更时通知各系统,实现松耦合设计。
|
2天前
|
存储 C#
C# 委托(Delegate):实现方法回调
委托是方法的类型,可引用方法并实现回调机制,常用于异步通知与事件触发。通过定义委托,可将方法作为参数传递,并在任务完成后调用多个回调函数,支持灵活的程序解耦与扩展。
|
2天前
|
C#
C# 枚举(Enum):规范常量定义
枚举用于定义命名常量,提升代码可读性与维护性。示例中定义订单状态枚举,演示赋值、转换、解析及遍历操作,避免使用魔法数字,使逻辑更清晰易懂。
|
2天前
|
存储 缓存 安全
C# 字典(Dictionary):键值对存储的高效用法
`Dictionary<TKey, TValue>` 是键唯一且支持快速查找(O(1))的键值对集合,适用于存储映射关系。可通过 `Add` 添加、`TryGetValue` 安全获取、`Remove` 删除元素,遍历使用 `foreach`,建议优先使用 `TryGetValue` 提升性能。
|
2天前
|
JSON C# 数据格式
C# JSON 序列化与反序列化:Newtonsoft.Json 用法
JSON是前后端交互常用格式,Newtonsoft.Json(Json.NET)是C#中最流行的JSON处理库。本文介绍如何使用它实现对象与JSON字符串的序列化和反序列化,并提供封装工具类及调用示例,便于在项目中快速集成与使用。
|
2天前
|
C# 数据安全/隐私保护
C# 正则表达式:快速匹配与验证
正则表达式用于字符串模式匹配,如手机号、邮箱、密码验证等。C# 通过 `System.Text.RegularExpressions` 命名空间中的 `Regex` 类实现。本文示例展示了使用 `RegexHelper` 工具类进行常见验证:`IsPhoneNumber` 验证中国大陆手机号(1开头,共11位);`IsEmail` 校验邮箱格式;`IsValidPassword` 判断密码是否包含字母和数字且长度为8-20位;`ExtractNumbers` 提取字符串中所有数字。代码简洁高效,适用于数据校验与文本处理场景。

热门文章

最新文章