欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# 生成二维码(带Logo)

程序员文章站 2022-03-20 13:17:22
C# 生成二维码(带Logo) 第一种方式 我们需要引用 ThoughtWorks.QRCode.dll 生成带logo二维码(framework4.0以上) 下载地址:https://pan.baidu.com/s/1mBjd7PHB-Klybx18Z5Og8A 提取码: ugwa ///

c# 生成二维码(带logo)

第一种方式

我们需要引用 thoughtworks.qrcode.dll  生成带logo二维码(framework4.0以上) 

下载地址:https://pan.baidu.com/s/1mbjd7phb-klybx18z5og8a

提取码: ugwa 

/// <summary>
        /// 创建二维码
        /// </summary>
        /// <param name="content">内容</param>
        /// <returns></returns>
        public static bitmap createqrcode(string content)
        {
            try
            {
                qrcodeencoder qrencoder = new qrcodeencoder();
                //二维码类型
                qrencoder.qrcodeencodemode = qrcodeencoder.encode_mode.byte;
                //二维码尺寸
                qrencoder.qrcodescale = 4;
                //二维码版本
                qrencoder.qrcodeversion = 7;
                //二维码容错程度
                qrencoder.qrcodeerrorcorrect = qrcodeencoder.error_correction.m;
                //字体与背景颜色
                qrencoder.qrcodebackgroundcolor = color.white;
                qrencoder.qrcodeforegroundcolor = color.black;
                //utf-8编码类型
                bitmap qrcode = qrencoder.encode(content, encoding.utf8);

                return qrcode;
            }
            catch (exception)
            {
                return null;
            }
        }
/// <summary>
        /// 生成带logo二维码
        /// </summary>
        /// <returns></returns>
        public static bitmap createqrcodewithlogo(string content, string logopath)
        {
            //生成二维码
            bitmap qrcode = createqrcode(content);
            //生成logo
            bitmap logo = new bitmap(logopath);
            //合成
            imageutility util = new imageutility();
            bitmap finalimage = util.mergeqrimg(qrcode, logo);
            return finalimage;
        }
/// <summary>
        /// 保存二维码
        /// </summary>
        /// <param name="qrcode">二维码图片</param>
        /// <param name="savepath">保存路径</param>
        /// <param name="qrcodename">图片名称</param>
        public static void saveqrcode(bitmap qrcode, string savepath, string qrcodename)
        {
            if (!directory.exists(savepath))
            {
                directory.createdirectory(savepath);
            }
            qrcode.save(path.combine(savepath, qrcodename + ".png"), imageformat.png);

            qrcode.dispose();
        }

 

第二种方式

我们需要引用 gma.qrcodenet.encoding.net45.dll  (framework4.5以上)支持中文

下载地址:https://pan.baidu.com/s/1tkmwdwhyhtp_fjntyhknsq

提取码: eqjh

// <summary>
        /// 生成保存二维码(framework4.5以上)
        /// </summary>
        /// <param name="codestring"></param>
        /// <param name="picname"></param>
        /// <param name="filepath"></param>
        public static void createqrcode(string codestring, string picname, string filepath)
        {
            qrencoder qrencoder = new qrencoder(errorcorrectionlevel.h);
            qrcode code = new qrcode();
            qrencoder.tryencode(codestring, out code);
            const int modelsizeinpixels = 4;

            graphicsrenderer render = new graphicsrenderer(new fixedmodulesize(modelsizeinpixels, quietzonemodules.two)
                , brushes.black, brushes.white);
            if (!directory.exists(filepath))
            {
                directory.createdirectory(filepath);
            }
            string filename = filepath + "\\" + picname + ".png";
            using (filestream stream = new filestream(filename, filemode.create))
            {
                render.writetostream(code.matrix, imageformat.png, stream);
            }
        }