欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C#輕松實現條形碼二維碼生成及識別

admin
2024年12月25日 12:33 本文熱度 261

-Begin-

今天給大家分享一下,如何基于C#來生成并識別條形碼或者二維碼。

ZXing.Net

實現二維碼生成的庫有很多,我們這里采用的是ZXing.Net。

ZXing是一個開放源碼的,用Java實現的多種格式的一維二維條碼圖像處理庫,而ZXing.Net是ZXing在.Net平臺下的實現。

我們通過Nuget搜索zxing.net即可搜索安裝。

BarCodeHelper

安裝好ZXing.Net后,我們創建一個BarCodeHelper,對于進行封裝,封裝了以下幾個方法:

方法一:生成條形碼

public static Bitmap GenerateBarCode(string text, int width, int height){    BarcodeWriter writer = new BarcodeWriter();    writer.Format = BarcodeFormat.CODE_39;    EncodingOptions options = new EncodingOptions()    {        Width = width,        Height = height,        Margin = 2,        PureBarcode = true    };    writer.Options = options;    Bitmap map = writer.Write(text);    return map;}

方法二:生成二維碼

public static Bitmap GenerateQRCode(string text, int width, int height){    BarcodeWriter writer = new BarcodeWriter();    writer.Format = BarcodeFormat.QR_CODE;    QrCodeEncodingOptions options = new QrCodeEncodingOptions()    {        DisableECI = true,//設置內容編碼        CharacterSet = "UTF-8",  //設置二維碼的寬度和高度        Width = width,        Height = height,        Margin = 1//設置二維碼的邊距,單位不是固定像素    };    writer.Options = options;
   Bitmap map = writer.Write(text);    return map;}

方法三:生成帶Logo二維碼

public static Bitmap GenerateQRCodeWithLogo(string text, int width, int height, Bitmap logo){    //構造二維碼寫碼器    MultiFormatWriter writer = new MultiFormatWriter();    Dictionary<EncodeHintType, object> hint = new Dictionary<EncodeHintType, object>();    hint.Add(EncodeHintType.CHARACTER_SET, "UTF-8");    hint.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);    //生成二維碼     BitMatrix bm = writer.encode(text, BarcodeFormat.QR_CODE, width, height, hint);    BarcodeWriter barcodeWriter = new BarcodeWriter();    Bitmap map = barcodeWriter.Write(bm);    //獲取二維碼實際尺寸    int[] rectangle = bm.getEnclosingRectangle();    //計算插入圖片的大小和位置    int middleW = Math.Min((int)(rectangle[2] / 3.5), logo.Width);    int middleH = Math.Min((int)(rectangle[3] / 3.5), logo.Height);    int middleL = (map.Width - middleW) / 2;    int middleT = (map.Height - middleH) / 2;    Bitmap bmpimg = new Bitmap(map.Width, map.Height, PixelFormat.Format32bppArgb);    using (Graphics g = Graphics.FromImage(bmpimg))    {        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;        g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;        g.DrawImage(map, 0, 0, width, height);    }    //將二維碼插入圖片    Graphics myGraphic = Graphics.FromImage(bmpimg);    //白底    myGraphic.FillRectangle(Brushes.Transparent, middleL, middleT, middleW, middleH);    myGraphic.DrawImage(logo, middleL, middleT, middleW, middleH);    return bmpimg;}

方法四:識別條碼二維碼

public static string ReadCode(Bitmap bitmap){    BarcodeReader barcodeReader = new BarcodeReader();    barcodeReader.Options.CharacterSet = "UTF-8";    Result result = barcodeReader.Decode(bitmap);    return result.Text;}

案例應用

有了以上方法后,編寫一個案例來進行功能測試。

按鈕事件代碼很簡單,就是調用BarCodeHelper中的對應方法即可。

private void btn_BarCode_Click(object sender, EventArgs e){    this.pic_BarCode.Image = BarCodeHelper.GenerateBarCode(this.txt_BarCode.Text, this.pic_BarCode.Width, this.pic_BarCode.Height);}
private void btn_QRCode_Click(object sender, EventArgs e){    if (chk_Logo.Checked)    {        this.pic_QRCode.Image = BarCodeHelper.GenerateQRCodeWithLogo(this.txt_QRCode.Text,this.pic_QRCode.Width, this.pic_QRCode.Height, new Bitmap(this.pic_Logo.Image));    }    else    {        this.pic_QRCode.Image = BarCodeHelper.GenerateQRCode(this.txt_QRCode.Text, this.pic_QRCode.Width, this.pic_QRCode.Height);    }}
private void btn_ReadQRCode_Click(object sender, EventArgs e){    MessageBox.Show(BarCodeHelper.ReadCode(new Bitmap(this.pic_QRCode.Image)));}
private void btn_ReadBarCode_Click(object sender, EventArgs e){    MessageBox.Show(BarCodeHelper.ReadCode(new Bitmap(this.pic_BarCode.Image)));}

最終實現效果如下所示:

-END-?


該文章在 2024/12/25 16:13:25 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved