C#二維碼產生

來源:互聯網
上載者:User

標籤:des   blog   http   io   os   ar   使用   for   sp   

C#二維碼產生,這裡使用開源的ThoughtWorks.QRCode.dll庫。

1、下載ThoughtWorks.QRCode.dll庫檔案,並引用到項目中。

2、建立QRCodeHandler.cs二維碼處理類

 

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Drawing;using ThoughtWorks.QRCode.Codec;using ThoughtWorks.QRCode.Codec.Data;using ThoughtWorks.QRCode.Codec.Util;namespace MyStudy.Utility{    /// <summary>    /// 二維碼處理類    /// </summary>    public class QRCodeHandler    {        /// <summary>        /// 建立二維碼        /// </summary>        /// <param name="QRString">二維碼字串</param>        /// <param name="QRCodeEncodeMode">二維碼編碼(Byte、AlphaNumeric、Numeric)</param>        /// <param name="QRCodeScale">二維碼尺寸(Version為0時,1:26x26,每加1寬和高各加25</param>        /// <param name="QRCodeVersion">二維碼密集度0-40</param>        /// <param name="QRCodeErrorCorrect">二維碼錯誤修正能力(L:7% M:15% Q:25% H:30%)</param>        /// <param name="filePath">儲存路徑</param>        /// <param name="hasLogo">是否有logo(logo尺寸50x50,QRCodeScale>=5,QRCodeErrorCorrect為H級)</param>        /// <param name="logoFilePath">logo路徑</param>        /// <returns></returns>        public bool CreateQRCode(string QRString, string QRCodeEncodeMode, short QRCodeScale, int QRCodeVersion, string QRCodeErrorCorrect, string filePath, bool hasLogo, string logoFilePath)        {            bool result = true;            QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();            switch (QRCodeEncodeMode)            {                case "Byte":                    qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;                    break;                case "AlphaNumeric":                    qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC;                    break;                case "Numeric":                    qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.NUMERIC;                    break;                default:                    qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;                    break;            }            qrCodeEncoder.QRCodeScale = QRCodeScale;            qrCodeEncoder.QRCodeVersion = QRCodeVersion;            switch (QRCodeErrorCorrect)            {                case "L":                    qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;                    break;                case "M":                    qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;                    break;                case "Q":                    qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.Q;                    break;                case "H":                    qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H;                    break;                default:                    qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H;                    break;            }            try            {                Image image = qrCodeEncoder.Encode(QRString, System.Text.Encoding.UTF8);                System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);                image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);                fs.Close();                if (hasLogo)                {                    Image copyImage = System.Drawing.Image.FromFile(logoFilePath);                    Graphics g = Graphics.FromImage(image);                    int x = image.Width / 2 - copyImage.Width / 2;                    int y = image.Height / 2 - copyImage.Height / 2;                    g.DrawImage(copyImage, new Rectangle(x, y, copyImage.Width, copyImage.Height), 0, 0, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel);                    g.Dispose();                    image.Save(filePath);                    copyImage.Dispose();                }                image.Dispose();            }            catch (Exception ex)            {                result = false;            }            return result;        }    }}

 

3、調用方法,產生二維碼

 

QRCodeHandler qr = new QRCodeHandler();string path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"/QRCode/";    //檔案目錄string qrString = "http://blog.csdn.net/pan_junbiao";                         //二維碼字串string logoFilePath = path + "myLogo.jpg";                                    //Logo路徑50*50string filePath = path + "myCode.jpg";                                        //二維碼檔案名稱qr.CreateQRCode(qrString, "Byte", 5, 0, "H", filePath, true, logoFilePath);   //產生

C#二維碼產生

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.