Skip to content

二维码图片添加文字

约 295 字小于 1 分钟

NET

2024-03-16

 public static string QRCodeAppendFont(string enCodeString, string name, string fileName)
        {
            try
            {
                string regDate = DateTime.Now.ToString("yyyy-MM-dd");

                string file_path = AppDomain.CurrentDomain.BaseDirectory + "QRCode\\" + regDate + "\\";
                string codeUrl = file_path + fileName + ".jpg";
                string buildUrl = "/QRCode/" + regDate + "/" + fileName + ".jpg";

                QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
                qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//编码方式(注意:BYTE能支持中文,ALPHA_NUMERIC扫描出来的都是数字)
                qrCodeEncoder.QRCodeScale = 6; //大小(值越大生成的二维码图片像素越高)
                qrCodeEncoder.QRCodeVersion = 0;//版本(注意:设置为0主要是防止编码的字符串太长时发生错误)
                qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;//错误效验、错误更正(有4个等级)
                qrCodeEncoder.QRCodeBackgroundColor = Color.White;//背景色
                qrCodeEncoder.QRCodeForegroundColor = Color.Black;//前景色


                Bitmap bt = qrCodeEncoder.Encode(enCodeString, Encoding.UTF8);
                if (!System.IO.Directory.Exists(file_path))
                    System.IO.Directory.CreateDirectory(file_path);

                Bitmap panel = new Bitmap(500, 800);
                Graphics g = Graphics.FromImage(panel);
                g.Clear(Color.White);
                g.DrawImage(bt, (panel.Width - bt.Width) / 2, 100, bt.Width, bt.Height);
                g.DrawString("电子健康卡", new Font("微软雅黑", 13f, FontStyle.Bold), Brushes.Black, new PointF((panel.Width - 100) / 2, 50));//(panel.Width- bt.Width)/2
                g.DrawString($"姓名: {name}", new Font("微软雅黑", 12f, FontStyle.Regular), Brushes.Black, new PointF((panel.Width - bt.Width) / 2, bt.Height + 120));
                g.DrawString(DateTime.Now.ToString("yyyy-MM-dd HH:mm"), new Font("微软雅黑", 7f, FontStyle.Regular), Brushes.Black, new PointF((panel.Width - bt.Width) / 2, bt.Height + 120 + 40));

                bt = new Bitmap(panel);
                bt.Save(codeUrl, System.Drawing.Imaging.ImageFormat.Jpeg);

                qrCodeEncoder = null;
                panel.Dispose();
                bt.Dispose();
                return codeUrl;
            }
            catch (Exception ex)
            {
                return "";
            }
        }