如何使用 QRCoder 迁移;使用ZXing;在 asp.net?

How to migrate using QRCoder; to using ZXing; in asp.net?

如何使用二维码迁移;使用ZXing;在 asp.net ,因为我学习了如何使用 ASP.NET 和

生成二维码

https://www.c-sharpcorner.com/blogs/how-to-generate-qr-code-using-asp-net

网站但网站中的代码使用 QRCoder 库不支持 UTF-8 编码,我已将第 16 行至第 31 行的 QRCoder 库代码迁移到 ZXing 库

https://github.com/ritesh9835/QrCode https://github.com/ritesh9835/QrCode/blob/master/QRcodeDemo/QRcodeDemo/Controllers/HomeController.cs

网站第 16 行 - 第 31 行改为 QRCoder 库代码(示例库代码 QRCoder 和 Zxing 在底部)。

QRCoder库代码。

using QRCoder;
using System;
using System.Drawing;
using System.IO;

namespace QRCode_Demo
{
    public partial class QRCode : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void btnGenerate_Click(object sender, EventArgs e)
        {
            string code = txtQRCode.Text;
            QRCodeGenerator qrGenerator = new QRCodeGenerator();
            QRCodeGenerator.QRCode qrCode = qrGenerator.CreateQrCode(code, QRCodeGenerator.ECCLevel.Q);
            System.Web.UI.WebControls.Image imgBarCode = new System.Web.UI.WebControls.Image();
            imgBarCode.Height = 150;
            imgBarCode.Width = 150;
            using (Bitmap bitMap = qrCode.GetGraphic(20))
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    bitMap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                    byte[] byteImage = ms.ToArray();
                    imgBarCode.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(byteImage);
                }
                PlaceHolder1.Controls.Add(imgBarCode);
            }
        }
    }
}

将 Zxing 库代码替换为第 16 行至第 31 行的 QRCoder 库代码。

        private string GenerateQRCode(string qrcodeText)
        {
            string folderPath = "~/Images/";
            string imagePath = "~/Images/QrCode.jpg";
            // create new Directory if not exist
            if (!Directory.Exists(Server.MapPath(folderPath)))
            {
                Directory.CreateDirectory(Server.MapPath(folderPath));
            }

            var barcodeWriter = new BarcodeWriter();
            barcodeWriter.Format = BarcodeFormat.QR_CODE;
            var result = barcodeWriter.Write(qrcodeText);

            string barcodePath = Server.MapPath(imagePath);
            var barcodeBitmap = new Bitmap(result);
            using (MemoryStream memory = new MemoryStream())
            {
                using (FileStream fs = new FileStream(barcodePath, FileMode.Create, FileAccess.ReadWrite))
                {
                    barcodeBitmap.Save(memory, ImageFormat.Jpeg);
                    byte[] bytes = memory.ToArray();
                    fs.Write(bytes, 0, bytes.Length);
                }
            }
            return imagePath;
        }

你的意思是这样的?

protected void btnGenerate_Click(object sender, EventArgs e)
{
    string code = txtQRCode.Text;

    var barcodeWriter = new BarcodeWriter();
    barcodeWriter.Format = BarcodeFormat.QR_CODE;
    barcodeWriter.Options.Margin = 0;
    barcodeWriter.Options.Width = 150;
    barcodeWriter.Options.Height = 150;

    System.Web.UI.WebControls.Image imgBarCode = new System.Web.UI.WebControls.Image();
    imgBarCode.Height = 150;
    imgBarCode.Width = 150;

    using (Bitmap bitMap = barcodeWriter.Write(code))
    {
        using (MemoryStream ms = new MemoryStream())
        {
            bitMap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
            byte[] byteImage = ms.ToArray();
            imgBarCode.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(byteImage);
        }
        PlaceHolder1.Controls.Add(imgBarCode);
    }
}