使用C#和ZXing開(kāi)發(fā)的碼生成與識(shí)別軟件
準(zhǔn)備工作
首先得在項(xiàng)目里引入ZXing庫(kù)。咱可以通過(guò)NuGet包管理器來(lái)搞定,打開(kāi)“程序包管理器控制臺(tái)”,敲入以下命令:
Install-Package ZXing.Net
這就把ZXing.Net這個(gè)包給裝上了,它可是咱開(kāi)發(fā)的得力助手。
生成碼
生成碼的過(guò)程其實(shí)不難。咱先來(lái)看生成二維碼的代碼示例:
using ZXing;
using ZXing.QrCode;
using System.Drawing;
class Program
{
static void Main()
{
string content = "https://www.example.com";// 要編碼到二維碼里的內(nèi)容
BarcodeWriter writer = new BarcodeWriter
{
Format = BarcodeFormat.QR_CODE,
Options = new QrCodeEncodingOptions
{
Height = 300,
Width = 300
}
};
Bitmap result = writer.Write(content);
result.Save("qrcode.png");
}
}這段代碼里,咱先定義了要編碼到二維碼里的內(nèi)容content,這里是一個(gè)網(wǎng)址。然后創(chuàng)建了一個(gè)BarcodeWriter對(duì)象,指定它生成的格式是QR_CODE,也就是二維碼啦。還設(shè)置了二維碼圖片的高度和寬度為300像素。接著調(diào)用Write方法把內(nèi)容寫(xiě)進(jìn)二維碼,最后把生成的二維碼以圖片的形式保存下來(lái),名字叫qrcode.png。
要是想生成條形碼,代碼也類(lèi)似,只需要改改格式就行:
using ZXing;
using ZXing.Common;
using System.Drawing;
class Program
{
static void Main()
{
string content = "123456789012";// 條形碼內(nèi)容
BarcodeWriter writer = new BarcodeWriter
{
Format = BarcodeFormat.CODE_128,
Options = new EncodingOptions
{
Height = 100,
Width = 300
}
};
Bitmap result = writer.Write(content);
result.Save("barcode.png");
}
}這里把格式改成了CODE_128,這是一種常見(jiàn)的條形碼格式,然后設(shè)置下合適的高度和寬度,就生成條形碼圖片barcode.png了。
識(shí)別碼
識(shí)別碼同樣很有意思。下面是識(shí)別二維碼和條形碼的代碼:
using ZXing;
using ZXing.Common;
using System.Drawing;
class Program
{
static void Main()
{
string filePath = "qrcode.png";// 要識(shí)別的圖片路徑
var bitmap = new Bitmap(filePath);
var reader = new BarcodeReader();
var result = reader.Decode(new BitmapLuminanceSource(bitmap));
if (result!= null)
{
Console.WriteLine("識(shí)別結(jié)果: " + result.Text);
}
else
{
Console.WriteLine("未識(shí)別到有效碼");
}
}
}這段代碼里,先指定了要識(shí)別的圖片路徑filePath,這里假設(shè)是之前生成的qrcode.png。接著創(chuàng)建一個(gè)Bitmap對(duì)象加載圖片,再創(chuàng)建一個(gè)BarcodeReader對(duì)象來(lái)做識(shí)別工作。調(diào)用Decode方法傳入圖片的亮度源BitmapLuminanceSource,如果識(shí)別成功,result就會(huì)有值,咱把識(shí)別出來(lái)的文本打印出來(lái);要是沒(méi)識(shí)別到,就提示“未識(shí)別到有效碼”。
用C#結(jié)合ZXing開(kāi)發(fā)碼生成與識(shí)別軟件是不是還挺酷的?無(wú)論是用于開(kāi)發(fā)工具類(lèi)軟件,還是集成到大型項(xiàng)目里,這個(gè)技能都超實(shí)用,大家不妨動(dòng)手試試,說(shuō)不定還能發(fā)現(xiàn)更多有趣的應(yīng)用場(chǎng)景呢!

到此這篇關(guān)于使用C#和ZXing開(kāi)發(fā)的碼生成與識(shí)別軟件的文章就介紹到這了,更多相關(guān)C# ZXing碼生成與識(shí)別軟件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#命令行參數(shù)解析庫(kù)System.CommandLine使用
System.CommandLine是一個(gè)基于.Net Standard 2.0的命令行參數(shù)解析庫(kù),該項(xiàng)目還是屬于beta狀態(tài),期待以后的正式版本,文章通過(guò)示例代碼給大家介紹了System.CommandLine使用講解,感興趣的朋友一起看看吧2021-06-06
C#結(jié)合SQLite數(shù)據(jù)庫(kù)使用方法及應(yīng)用場(chǎng)景
本文介紹SQLite的輕量、零配置、跨平臺(tái)特性及其在C#中的應(yīng)用,涵蓋數(shù)據(jù)庫(kù)創(chuàng)建、增刪改查操作及SQL語(yǔ)法,通過(guò)NuGet安裝組件實(shí)現(xiàn)數(shù)據(jù)管理,并使用DataTable處理查詢結(jié)果,感興趣的朋友一起看看吧2025-07-07
C#使用smtp發(fā)送帶附件的郵件實(shí)現(xiàn)方法
這篇文章主要介紹了C#使用smtp發(fā)送帶附件的郵件實(shí)現(xiàn)方法,可直接將string類(lèi)型結(jié)果保存為附件,實(shí)例中備有相應(yīng)的注釋便于理解,需要的朋友可以參考下2014-11-11
C#使用Socket實(shí)現(xiàn)服務(wù)器與多個(gè)客戶端通信(簡(jiǎn)單的聊天系統(tǒng))
這篇文章主要介紹了C#使用Socket實(shí)現(xiàn)服務(wù)器與多個(gè)客戶端通信(簡(jiǎn)單的聊天系統(tǒng)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
c# checked和unchecked關(guān)鍵字的使用
C#中的checked關(guān)鍵字用于啟用整數(shù)運(yùn)算的溢出檢查,可以捕獲并拋出System.OverflowException異常,而unchecked關(guān)鍵字則禁用這種檢查,允許結(jié)果溢出,下面就來(lái)具體介紹一下2025-01-01

