C#使用zxing/zbar/thoughtworkQRcode解析二維碼的示例代碼
最近做項(xiàng)目需要解析二維碼圖片,找了一大圈,發(fā)現(xiàn)沒有人去整理下開源的幾個(gè)庫案例,花了點(diǎn)時(shí)間
做了zxing,zbar和thoughtworkqrcode解析二維碼案例,希望大家有幫助。
zxing是谷歌開源的二維碼庫,zbar,thoughtworkQRcode也是開源的,三者之間比較各有優(yōu)劣
下面通過一個(gè)案例demo源碼,來認(rèn)識(shí)學(xué)習(xí)下這三者的實(shí)際解碼效果,
第一次上傳demo源碼,獻(xiàn)丑了

zbar解析關(guān)鍵代碼:
Image primaryImage = Image.FromFile(fileName);
Bitmap pImg = MakeGrayscale3((Bitmap)primaryImage);
using (ZBar.ImageScanner scanner = new ZBar.ImageScanner())
{
List<ZBar.Symbol> symbols = new List<ZBar.Symbol>();
System.Diagnostics.Stopwatch watch = new Stopwatch();
watch.Start();
symbols = scanner.Scan((Image)pImg);
watch.Stop();
TimeSpan timeSpan = watch.Elapsed;
MessageBox.Show("掃描執(zhí)行時(shí)間:" + timeSpan.TotalMilliseconds.ToString());
if (symbols != null && symbols.Count > 0)
{
string result = string.Empty;
symbols.ForEach(s => result += "條碼內(nèi)容:" + s.Data + " 條碼質(zhì)量:" + s.Type + Environment.NewLine);
MessageBox.Show(result);
}
}zxing解析關(guān)鍵代碼:
Image primaryImage = Image.FromFile(fileName);
Bitmap pImg = MakeGrayscale3((Bitmap)primaryImage);
BarcodeReader reader = new BarcodeReader();
System.Diagnostics.Stopwatch watch = new Stopwatch();
watch.Start();
Result result = reader.Decode((Bitmap)pImg); //通過reader解碼
watch.Stop();
TimeSpan timeSpan = watch.Elapsed;
MessageBox.Show("二維碼值:"+result+"掃描執(zhí)行時(shí)間:" + timeSpan.TotalMilliseconds.ToString());thoughtworkqrcode解析關(guān)鍵代碼:
Image primaryImage = Image.FromFile(fileName);
Bitmap pImg = (Bitmap)primaryImage;// MakeGrayscale3((Bitmap)primaryImage);
try
{
System.Diagnostics.Stopwatch watch = new Stopwatch();
watch.Start();
string decodedString = new QRCodeDecoder().decode(new QRCodeBitmapImage(pImg), Encoding.UTF8);
watch.Stop();
TimeSpan timeSpan = watch.Elapsed;
MessageBox.Show("二維碼值:" + decodedString + "掃描執(zhí)行時(shí)間:" + timeSpan.TotalMilliseconds.ToString());
}
catch (Exception ex)
{
MessageBox.Show("好難過");
}下面來測(cè)試下三者之間的給力程度吧,在草料二維碼網(wǎng)頁上在線生成一個(gè)二維碼

為了測(cè)試給力程度,我們截出如下圖片,三者對(duì)比解碼:

下面來看下效果吧:
zbar效果

zxing效果

thoughtworqrcode效果

從解碼的效率上來看zbar》zxing》thoughtworkqrcode
從穩(wěn)定性來看zbar是最差的,zbar這個(gè)開源項(xiàng)目已經(jīng)很久沒再維護(hù)更新了,所以這也是跟不上時(shí)代的一個(gè)原因,但是效率確實(shí)比較高。
到此這篇關(guān)于C#使用zxing/zbar/thoughtworkQRcode解析二維碼的示例代碼的文章就介紹到這了,更多相關(guān)C#解析二維碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# .NET實(shí)現(xiàn)Excel到JSON的自動(dòng)化轉(zhuǎn)換
在 .NET 開發(fā)中,Excel 與 JSON 的格式轉(zhuǎn)換是數(shù)據(jù)交互的高頻需求,本文將詳細(xì)講解如何使用免費(fèi) 庫快速實(shí)現(xiàn) Excel 到 JSON 的自動(dòng)化轉(zhuǎn)換,有需要的可以了解下2026-01-01
使用linq to xml修改app.config示例(linq讀取xml)
這篇文章主要介紹了使用linq to xml修改app.config示例,需要的朋友可以參考下2014-02-02
C#儀器數(shù)據(jù)文件解析Excel文件的方法淺析(xls、xlsx)
這篇文章主要給大家介紹了關(guān)于C#儀器數(shù)據(jù)文件如何解析Excel文件的方法,包括解析xls、xlsx兩種格式,文中介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10
C# 實(shí)現(xiàn)dataGridView選中一行右鍵出現(xiàn)菜單的示例代碼
這篇文章主要介紹了C# 實(shí)現(xiàn)dataGridView選中一行右鍵出現(xiàn)菜單,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
C#使用DateTime.Now靜態(tài)屬性動(dòng)態(tài)獲得系統(tǒng)當(dāng)前日期和時(shí)間
本文主要介紹了C#使用DateTime.Now靜態(tài)屬性動(dòng)態(tài)獲得系統(tǒng)當(dāng)前日期和時(shí)間,DateTime結(jié)構(gòu)的Now靜態(tài)屬性只是得到一個(gè)系統(tǒng)時(shí)間對(duì)象,該時(shí)間對(duì)象不會(huì)隨著系統(tǒng)時(shí)間的變化而變化,如果要?jiǎng)討B(tài)顯示系統(tǒng)時(shí)間,可以使用計(jì)時(shí)器間隔地獲取系統(tǒng)時(shí)間對(duì)象并顯示,感興趣的可以了解一下2024-01-01

