C#使用zxing,zbar,thoughtworkQRcode解析二維碼,附源代碼


 最近做項目需要解析二維碼圖片,找了一大圈,發現沒有人去整理下開源的幾個庫案例,花了點時間

 做了zxing,zbar和thoughtworkqrcode解析二維碼案例,希望大家有幫助。

zxing是谷歌開源的二維碼庫,zbar,thoughtworkQRcode也是開源的,三者之間比較各有優劣

下面通過一個案例demo源碼,來認識學習下這三者的實際解碼效果,

第一次上傳demo源碼,獻丑了

 

zbar解析關鍵代碼:

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("掃描執行時間:" + timeSpan.TotalMilliseconds.ToString());

if (symbols != null && symbols.Count > 0)
{
string result = string.Empty;
symbols.ForEach(s => result += "條碼內容:" + s.Data + " 條碼質量:" + s.Type + Environment.NewLine);
MessageBox.Show(result);
}
}

 

zxing解析關鍵代碼:

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+"掃描執行時間:" + timeSpan.TotalMilliseconds.ToString());

 

thoughtworkqrcode解析關鍵代碼:

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 + "掃描執行時間:" + timeSpan.TotalMilliseconds.ToString());
}
catch (Exception ex)
{
MessageBox.Show("好難過");
}

 

下面來測試下三者之間的給力程度吧,在草料二維碼網頁上在線生成一個二維碼

 

 

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

 

下面來看下效果吧:

zbar效果

zxing效果

thoughtworqrcode效果

 

 從解碼的效率上來看zbar》zxing》thoughtworkqrcode

從穩定性來看zbar是最差的,zbar這個開源項目已經很久沒再維護更新了,所以這也是跟不上時代的一個原因,但是效率確實比較高。

最后附上源碼:源碼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM