C# Qrcode製作

Qrcode 製作介紹

前言

現代人人手一支手機,因此只要有手機就能將Qrcode的內容,呈現在使用者的手機上,這樣不用使用者慢慢key網址,節省很多時間。

流程圖

撰寫產生Qrcode的程式

使用者掃Qrcode

將內容傳給使用者

前置準備

要使用的程序庫

nuget抓取Zxing

程式碼

使用程式庫

using ZXing.QrCode;
using ZXing;
using ZXing.Common;
using ZXing.Rendering;

內容

public partial class Qrcode : Form
{        
        private string imagePath = @"{圖片位置}";
        public Qrcode()
        {
            InitializeComponent();
            this.pictureBox1.Image = GetQRCodeByZXingNet("https://dotblogs.com.tw/neil_coding", 200, 200);
            Console.WriteLine("1122222222222");
        }
        private Bitmap GetQRCodeByZXingNet(String strMessage, Int32 width, Int32 height)
        {
            Bitmap result = null;
            try
            {
                BarcodeWriter barCodeWriter = new BarcodeWriter();
                barCodeWriter.Format = BarcodeFormat.QR_CODE; //barcode格式
                barCodeWriter.Options.Hints.Add(EncodeHintType.CHARACTER_SET, "UTF-8");  //編碼字元utf-8
                barCodeWriter.Options.Hints.Add(EncodeHintType.ERROR_CORRECTION, ZXing.QrCode.Internal.ErrorCorrectionLevel.H); //錯誤校正等級
                barCodeWriter.Options.Height = height; //高度
                barCodeWriter.Options.Width = width; //寬度
                barCodeWriter.Options.Margin = 0; //外邊距
                ZXing.Common.BitMatrix bm = barCodeWriter.Encode(strMessage); //將訊息寫入
                result = barCodeWriter.Write(bm);
                
                Bitmap overlay = new Bitmap(imagePath); //載入圖片

                int deltaHeigth = result.Height - overlay.Height; //圖片y
                int deltaWidth = result.Width - overlay.Width; //圖片x

                Graphics g = Graphics.FromImage(result); //圖型
                g.DrawImage(overlay, new Point(deltaWidth / 2, deltaHeigth / 2)); //畫出圖片
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            return result;
        }
}

Result

結語

利用Zxing程式庫就可以製作出客製化的Qrcode,讓使用者去掃描