.net 生成二维码

需要的类

安装包 QRCoder

1. QRCodeHelper  二维码帮助类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
namespace SmartGardon.Common.QRCode
{
    /// <summary>
    /// 二维码帮助类
    /// </summary>
    public class QRCodeHelper
    {
        /// <summary>
        /// 生成二维码图片
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public Bitmap CreateQRimg(string str)
        {
            QRCodeGenerator qrGenerator = new QRCodeGenerator();
            QRCodeData qrCodeData = qrGenerator.CreateQrCode(str, QRCodeGenerator.ECCLevel.Q);
            QRCoder.QRCode qrCode = new QRCoder.QRCode(qrCodeData);
            Bitmap bt = qrCode.GetGraphic(20);
 
            return bt;
        }
 
        /// <summary>
        /// 生成二维码图片流(二维码上含文字)
        /// </summary>
        /// <param name="str1">二维码中要传递的数据(地址)</param>
        /// <param name="str2">二维码上显示的文字说明</param>
        public byte[] GenerateQRCode(string str1, string str2)
        {
            using (Image codeImage = CreateQRimg(str1), strImage = ConvertStringToImage(str2))
            {
                Image img = CombineImage(600, 600, codeImage, 60, 50, strImage, 0, 530);
                using (var stream = new MemoryStream())
                {
                    img.Save(stream, ImageFormat.Jpeg);
                    //输出图片流
                    return stream.ToArray();
                }
            }
        }
 
        /// <summary>
        /// 生成二维码图片流(不含文字)
        /// </summary>
        /// <param name="str">二维码中要传递的数据(地址)</param>
        /// <returns></returns>
        public byte[] GenerateQRCode(string str)
        {
            using (Image codeImage = CreateQRimg(str))
            {
                using (var stream = new MemoryStream())
                {
                    codeImage.Save(stream, ImageFormat.Jpeg);
 
                    return stream.ToArray();
                }
            }
        }
 
        /// <summary>
        /// 生成文字图片
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public Image ConvertStringToImage(string str)
        {
            Bitmap image = new Bitmap(600, 40, PixelFormat.Format24bppRgb);
 
            Graphics g = Graphics.FromImage(image);
 
            Font font = new Font("SimHei", 14, FontStyle.Regular);
 
            g.Clear(Color.White);
 
            StringFormat format = new StringFormat();
            format.Alignment = StringAlignment.Center;
            format.LineAlignment = StringAlignment.Center;
 
            Rectangle rectangle = new Rectangle(0, 0, 600, 40);
 
            g.DrawString(str, font, new SolidBrush(Color.Black), rectangle, format);
 
            return image;
 
        }
 
        /// <summary>
        /// 在画板中合并二维码图片和文字图片
        /// </summary>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <param name="imgLeft"></param>
        /// <param name="imgLeft_left"></param>
        /// <param name="imgLeft_top"></param>
        /// <param name="imgRight"></param>
        /// <param name="imgRight_left"></param>
        /// <param name="imgRight_top"></param>
        /// <returns></returns>
        public Image CombineImage(int width, int height, Image imgLeft, int imgLeft_left, int imgLeft_top, Image imgRight, int imgRight_left, int imgRight_top)
        {
            Bitmap image = new Bitmap(width, height, PixelFormat.Format24bppRgb);
 
            Graphics g = Graphics.FromImage(image);
 
 
            g.Clear(Color.White);
            g.DrawImage(imgLeft, imgLeft_left, imgLeft_top, 500, 500);
            g.DrawImage(imgRight, imgRight_left, imgRight_top, imgRight.Width, imgRight.Height);
 
            return image;
 
        }
    }
}

  2.使用QRCodeHelper  

 public virtual async Task<string> GetQRCodeAsync()
        {
            var qrCode = new QRCodeHelper();var url = "https://www.baidu.com";
            var image = qrCode.GenerateQRCode(url, “显示的文字信息”);
            string result = "data:image/jpg;base64," + Convert.ToBase64String(image);
            return result;
        }

 

posted @   电器小君子  阅读(300)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示