C#生成二维码(【ThoughtWorks.QRCode】及【QRCoder】)

本文介绍了如何使用ThoughtWorks.QRCode和QRCoder这两个C#库来生成和解码二维码。ThoughtWorks.QRCode库可用于创建和保存二维码,而QRCoder库不仅支持生成二维码,还能添加中央水印功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、通过ThoughtWorks.QRCode实现生成二维码,可直接通过添加Nuget包引用

 		/// <summary>
        /// ThoughtWorks.QRCode生成二维码
        /// </summary>
        /// <param name="filePath">二维码生成后保存地址</param>
        /// <param name="qrCodeContent">二维码内容</param>
        public static void CreateQRCode(string filePath, string qrCodeContent)
        {
            ThoughtWorks.QRCode.Codec.QRCodeEncoder qrCodeEncoder = new ThoughtWorks.QRCode.Codec.QRCodeEncoder();
            qrCodeEncoder.QRCodeEncodeMode = ThoughtWorks.QRCode.Codec.QRCodeEncoder.ENCODE_MODE.BYTE;
            qrCodeEncoder.QRCodeScale = 4;//二维码大小比例
            qrCodeEncoder.QRCodeVersion = 8;
            qrCodeEncoder.QRCodeErrorCorrect = ThoughtWorks.QRCode.Codec.QRCodeEncoder.ERROR_CORRECTION.M;
            System.Drawing.Image image = qrCodeEncoder.Encode(qrCodeContent, Encoding.UTF8);//生成二维码图片
            System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.None);
            image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
            fs.Close();
            image.Dispose();
        }
        /// <summary>
        /// 二维码解码
        /// </summary>
        /// <param name="filePath">二维码图片路径</param>
        /// <returns></returns>
        public static string QRCodeDecoder(string filePath)
        {
            if (!System.IO.File.Exists(filePath))
            { return null; }
            System.Drawing.Bitmap myBitmap = new System.Drawing.Bitmap(System.Drawing.Image.FromFile(filePath));
            ThoughtWorks.QRCode.Codec.QRCodeDecoder decoder = new ThoughtWorks.QRCode.Codec.QRCodeDecoder();
            string decodedString = decoder.decode(new ThoughtWorks.QRCode.Codec.Data.QRCodeBitmapImage(myBitmap), Encoding.UTF8);
            return decodedString;
        }

2、通过QRCoder实现生成二维码,可直接通过添加Nuget包引用

		/// <summary>
        /// 生成二维码可附带中央水印
        /// </summary>
        /// <param name="filePath">二维码生成后保存地址</param>
        /// <param name="qrCodeContent">二维码内容</param>
        /// <param name="iconPath">二维码中央水印保存地址</param>
        public static void CreateQRCode(string filePath, string qrCodeContent, string iconPath = "")
        {
            // 生成二维码的内容
            QRCoder.QRCodeGenerator qrGenerator = new QRCoder.QRCodeGenerator();
            QRCoder.QRCodeData qrCodeData = qrGenerator.CreateQrCode(qrCodeContent, QRCoder.QRCodeGenerator.ECCLevel.Q);
            QRCoder.QRCode qrcode = new QRCoder.QRCode(qrCodeData);
            System.Drawing.Bitmap icon = null;//中央水印图标
            int iconSizePercent = 0;//水印图标大小
            int iconBorderWidth = 0;//水印图标边框
            int pixelsPerModule = 55;//像素大小
            bool drawQuietZones = false;//是否需要二维码外围空白区域(白边)
            System.Drawing.Color darkColor = System.Drawing.Color.Black;//二维码暗色部分,Color.颜色
            System.Drawing.Color lightColor = System.Drawing.Color.White;//亮色部分,Color.颜色
            //判断有无中心水印图标
            if (!string.IsNullOrWhiteSpace(iconPath))
            {
                icon = new System.Drawing.Bitmap(iconPath);
                iconSizePercent = 10;
                iconBorderWidth = 10;
            }
            //设置生成二维码
            System.Drawing.Bitmap qrCodeImage = qrcode.GetGraphic(pixelsPerModule, darkColor, lightColor, icon, iconSizePercent, iconBorderWidth, drawQuietZones);
            //保存二维码图片
            System.IO.Stream outputStream = new System.IO.FileStream(filePath, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.None);
            qrCodeImage.Save(outputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
            outputStream.Close();
            outputStream.Dispose();
        }

仅个人记录
参考文章:C# 生成二维码 QRCoder

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值