c# ThoughtWorks.QRCode 二维码

本文介绍如何通过NuGet包管理器在C#项目中添加ThoughtWorks.QRCode库,实现.NET平台上的二维码生成功能。

一、使用nuget添加包引用 


	PM>Install-Package ThoughtWorks.QRCode -Version 1.1.0
二、引用命称空间

	using ThoughtWorks.QRCode.Codec;
	using ThoughtWorks.QRCode.Codec.Data;
三、生成代码

        /// <summary>
        /// 生成二维码(中间不带LOGO)
        /// </summary>
        /// <param name="absoluteSave">保存的绝对路径</param>
        /// <param name="qrdata">要附加的内容</param>
        /// <returns></returns>
	public void CreateQRCode(string absoluteSave,string qrdata)
           {
            	try
            	  {
                	QRCodeEncoder encoder = new QRCodeEncoder();
                	encoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//编码方式(注意:BYTE能支持中文,ALPHA_NUMERIC扫描出来的都是数字)
                	encoder.QRCodeScale = 4;//大小(值越大生成的二维码图片像素越高)
                	encoder.QRCodeVersion = 0;//版本(注意:设置为0主要是防止编码的字符串太长时发生错误)
                	encoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H;//错误效验、错误更正(有4个等级)
                	encoder.QRCodeBackgroundColor = Color.White;
                	encoder.QRCodeForegroundColor = Color.Black;
                	System.Drawing.Image image = encoder.Encode(qrdata, Encoding.UTF8);
                	System.IO.Directory.CreateDirectory(absoluteSave);
                	image.Save(SaveFilePath, ImageFormat.Png);
                	image.Dispose()
            	  }
            	catch (Exception e)
             	  {
                	//一些操作
            	  }
           }



	/// <summary>
        /// 生成二维码(中间不带LOGO)
        /// </summary>
        /// <param name="absoluteSave">保存的绝对路径</param>
        /// <param name="qrdata">要附加的内容</param>
        /// <returns></returns>
	public void CreateQRCode(string absoluteSave,string qrdata)
           {
            	try
            	  {
                	QRCodeEncoder encoder = new QRCodeEncoder();
                	encoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//编码方式(注意:BYTE能支持中文,ALPHA_NUMERIC扫描出来的都是数字)
                	encoder.QRCodeScale = 4;//大小(值越大生成的二维码图片像素越高)
                	encoder.QRCodeVersion = 0;//版本(注意:设置为0主要是防止编码的字符串太长时发生错误)
                	encoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H;//错误效验、错误更正(有4个等级)
                	encoder.QRCodeBackgroundColor = Color.White;
                	encoder.QRCodeForegroundColor = Color.Black;
                	System.Drawing.Image image = encoder.Encode(qrdata, Encoding.UTF8);
                	System.IO.Directory.CreateDirectory(absoluteSave);
                	image.Save(SaveFilePath, ImageFormat.Png);
                	image.Dispose()
            	  }
            	catch (Exception e)
             	  {
                	//一些操作
            	  }
           }

    /// <summary>
    /// 生成二维码(中间带LOGO)
    /// </summary>
    /// <param name="absoluteSave">保存的绝对路径</param>
    /// <param name="qrdata">要附加的内容</param>
    ///<param name="absoluteSave">保存的绝对路径</param>
    /// <returns></returns>
    public void CreateQRCode(string absoluteSave, string qrdata, string AbsoluteLogo)
        {
            try
            {
                QRCodeEncoder encoder = new QRCodeEncoder();
                encoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//编码方式(注意:BYTE能支持中文,ALPHA_NUMERIC扫描出来的都是数字)
                encoder.QRCodeScale = 4;//大小(值越大生成的二维码图片像素越高)
                encoder.QRCodeVersion = 0;//版本(注意:设置为0主要是防止编码的字符串太长时发生错误)
                encoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H;//错误效验、错误更正(有4个等级)
                encoder.QRCodeBackgroundColor = Color.White;
                encoder.QRCodeForegroundColor = Color.Black;
                System.Drawing.Image image = encoder.Encode(qrdata, Encoding.UTF8);
                Bitmap btm = new Bitmap(AbsoluteLogo);
                Bitmap copyImage = new Bitmap(btm, image.Width / 5, image.Height / 5);
                Graphics g = Graphics.FromImage(image);
                int x = image.Width / 2 - copyImage.Width / 2;
                int y = image.Height / 2 - copyImage.Height / 2;
                g.DrawImage(copyImage, x, y);
                System.IO.Directory.CreateDirectory(absoluteSave);
                image.Save(SaveFilePath, ImageFormat.Png);
                image.Dispose();
                btm.Dispose();
                copyImage.Dispose();
                g.Dispose();
            }
            catch (Exception e)
            {
                //一些操作
            }
        }

四、解析二维码

    /// <summary>
    /// 解析二维码
    /// </summary>
    /// <param name="absoluteSave">二维码的绝对路径</param>
    /// <returns></returns>
      public static string DeCode(string AbsoluteQRCodePath)
        {
            string decodedString = new QRCodeDecoder().decode(new QRCodeBitmapImage(new Bitmap(AbsoluteQRCodePath)), Encoding.UTF8);
            return decodedString;
        }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值