ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

二维码q

2021-08-16 09:04:55  阅读:157  来源: 互联网

标签:image Bitmap 二维码 str input new


 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;
        }
        public Bitmap CreateQRimg(string str, Color darkColor, Color lightColor)
        {
            QRCodeGenerator qrGenerator = new QRCodeGenerator();
            QRCodeData qrCodeData = qrGenerator.CreateQrCode(str, QRCodeGenerator.ECCLevel.Q);
            QRCoder.QRCode qrCode = new QRCoder.QRCode(qrCodeData);
            Bitmap bt = qrCode.GetGraphic(3, darkColor, lightColor,null);
            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);

            try
            {
                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;
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                GC.Collect();
            }
        }

        /// <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);

            try
            {
                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;
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                g.Dispose();
            }
        }
    }
var qrCode = new QRCodeHelper();

                var image = qrCode.GenerateQRCode(appSections["ClassEvaluate:Default"] + "?gId=" + m.d.Id + "&cId=" + m.c.Id + "&tId=" + input.Id);
                string filename = "\\" + m.d.Name + " " + m.c.ClassName + "【" + input.TaskName + "(" + input.BeginDate.ToString("yyyyMMdd") + " - " + input.EndDate.ToString("yyyyMMdd") + ")】.jpg";
                string path = Path.GetDirectoryName(_iHostEnvironment.WebRootPath + "\\任务\\"
                             + input.TaskName + "(" + input.BeginDate.ToString("yyyyMMdd") + "-" + input.EndDate.ToString("yyyyMMdd") + ")_任务二维码\\"
                             + input.TaskName + "(" + input.BeginDate.ToString("yyyyMMdd") + "-" + input.EndDate.ToString("yyyyMMdd") + ")\\"
                             + m.d.Name + "\\");

                if (!Directory.Exists(path))
                    Directory.CreateDirectory(path);
                if (!File.Exists(path + filename))
                {
                    using (FileStream fs = System.IO.File.Create(path + filename, image.Length))
                    {
                        fs.Write(image, 0, image.Length);
                        fs.Flush();
                    }
                }

标签:image,Bitmap,二维码,str,input,new
来源: https://www.cnblogs.com/zmldz/p/15146013.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有