日韩欧美国产精品免费一二-日韩欧美国产精品亚洲二区-日韩欧美国产精品专区-日韩欧美国产另-日韩欧美国产免费看-日韩欧美国产免费看清风阁

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#輕松實(shí)現(xiàn)條形碼二維碼生成及識(shí)別

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

-Begin-

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

ZXing.Net

實(shí)現(xiàn)二維碼生成的庫(kù)有很多,我們這里采用的是ZXing.Net。

ZXing是一個(gè)開放源碼的,用Java實(shí)現(xiàn)的多種格式的一維二維條碼圖像處理庫(kù),而ZXing.Net是ZXing在.Net平臺(tái)下的實(shí)現(xiàn)。

我們通過(guò)Nuget搜索zxing.net即可搜索安裝。

BarCodeHelper

安裝好ZXing.Net后,我們創(chuàng)建一個(gè)BarCodeHelper,對(duì)于進(jìn)行封裝,封裝了以下幾個(gè)方法:

方法一:生成條形碼

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,//設(shè)置內(nèi)容編碼        CharacterSet = "UTF-8",  //設(shè)置二維碼的寬度和高度        Width = width,        Height = height,        Margin = 1//設(shè)置二維碼的邊距,單位不是固定像素    };    writer.Options = options;
   Bitmap map = writer.Write(text);    return map;}

方法三:生成帶Logo二維碼

public static Bitmap GenerateQRCodeWithLogo(string text, int width, int height, Bitmap logo){    //構(gòu)造二維碼寫碼器    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);    //獲取二維碼實(shí)際尺寸    int[] rectangle = bm.getEnclosingRectangle();    //計(jì)算插入圖片的大小和位置    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;}

方法四:識(shí)別條碼二維碼

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

案例應(yīng)用

有了以上方法后,編寫一個(gè)案例來(lái)進(jìn)行功能測(cè)試。

按鈕事件代碼很簡(jiǎn)單,就是調(diào)用BarCodeHelper中的對(duì)應(yīng)方法即可。

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)));}

最終實(shí)現(xiàn)效果如下所示:

-END-?


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

主站蜘蛛池模板: 国语对白露脸在线播放 | 国色天香中文在线观看www | 亚洲v欧美v国产v在线观看 | 亚洲欧洲日韩综合色天使 | 欧美在线精品 | 精品区一| 国产人成激情视频在线观看 | 国产日韩精品视频一区二区三区 | 亚洲一区二区三区在线观看蜜桃 | 日韩精品制服诱惑中文字幕 | 亚洲欧美日本国产专区一区 | 日韩精品制服诱惑中文字幕 | 欧美三级在线播放 | 国产又大又硬又粗视频 | 国产精品秘果冻 | 青苹果影院| 特级国产午夜理论不卡 | 日韩亚洲产在线观看 | 免费国产老师高 | 欧美大片黑寡妇免费观看 | 成人美女国产精品免费视 | 欧美一区二区激情视频在线播放 | 精品国内一区二区三区免费 | 国产日产免费高清欧美一区 | 国产99日韩精品第一页 | 开心五月丁香花综合网 | 亚洲综合一区三区 | 国产视频在线一二区精品分类 | 人人影视| 无毒国产不卡在线视频 | 亚洲国产一区二区在线 | 日本三级网址狠狠 | 日韩国产经典欧美午夜福利 | 欧美a免费 | 亚洲精品亚洲欧美综合区 | 老司机深夜免费福利 | 99久热只有精品视频免费看 | 91精品国产综合久蜜臀 | 频道国产在线资源 | 国产大码无尺度视频在线 | 亚洲v天堂v影 |