C#使用zxing/zbar/thoughtworkQRcode解析二維碼的示例代碼
最近做項(xiàng)目需要解析二維碼圖片,找了一大圈,發(fā)現(xiàn)沒(méi)有人去整理下開源的幾個(gè)庫(kù)案例,花了點(diǎn)時(shí)間
做了zxing,zbar和thoughtworkqrcode解析二維碼案例,希望大家有幫助。
zxing是谷歌開源的二維碼庫(kù),zbar,thoughtworkQRcode也是開源的,三者之間比較各有優(yōu)劣
下面通過(guò)一個(gè)案例demo源碼,來(lái)認(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); //通過(guò)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("好難過(guò)"); }
下面來(lái)測(cè)試下三者之間的給力程度吧,在草料二維碼網(wǎng)頁(yè)上在線生成一個(gè)二維碼
為了測(cè)試給力程度,我們截出如下圖片,三者對(duì)比解碼:
下面來(lái)看下效果吧:
zbar效果
zxing效果
thoughtworqrcode效果
從解碼的效率上來(lái)看zbar》zxing》thoughtworkqrcode
從穩(wěn)定性來(lái)看zbar是最差的,zbar這個(gè)開源項(xiàng)目已經(jīng)很久沒(méi)再維護(hù)更新了,所以這也是跟不上時(shí)代的一個(gè)原因,但是效率確實(shí)比較高。
到此這篇關(guān)于C#使用zxing/zbar/thoughtworkQRcode解析二維碼的示例代碼的文章就介紹到這了,更多相關(guān)C#解析二維碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在多線程中調(diào)用winform窗體控件的實(shí)現(xiàn)方法
這篇文章主要介紹了在多線程中調(diào)用winform窗體控件的實(shí)現(xiàn)方法,需要的朋友可以參考下2014-08-08操作XML文檔遇到的XMLNS問(wèn)題及解決方法 (C# 和 PHP)
不管是用 PHP 還是 C#, 在操作 XML 的時(shí)候我們除了一個(gè)節(jié)點(diǎn)一個(gè)節(jié)點(diǎn)去取值之外, 還有一個(gè)非常方便的表達(dá)式, 就是 XPATH2011-05-05關(guān)于C# TabPage如何隱藏的問(wèn)題
TabPage沒(méi)有Visible屬性,所以只能通過(guò)設(shè)置將其與父控件(tabcontrol)的關(guān)聯(lián)性去除就好了,如下面代碼:2013-04-04C#監(jiān)測(cè)IPv4v6網(wǎng)速及流量的實(shí)例代碼
這篇文章主要介紹了C#監(jiān)測(cè)IPv4v6網(wǎng)速及流量的實(shí)例代碼,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07C#簡(jiǎn)單獲取全屏中鼠標(biāo)焦點(diǎn)位置坐標(biāo)的方法示例
這篇文章主要介紹了C#簡(jiǎn)單獲取全屏中鼠標(biāo)焦點(diǎn)位置坐標(biāo)的方法,涉及C#針對(duì)鼠標(biāo)位置Position屬性的簡(jiǎn)單操作技巧,需要的朋友可以參考下2017-07-07