【示例教程】如何通過leadtools讀取二維碼中的中文

在使用leadtools進行二維碼識別的過程中,經常或碰到中文識別爲亂碼的情況,讓人比較鬱悶,本文教大家如何通過leadtools來讀取二維碼中的中文。
 
 
中文在編爲二維碼的時候,實際上是先按照一定的字符集編碼被轉換爲了二進制編碼,而我們如果需要正確的讀取出二維碼中的中文,就必須要確認編碼字符集,如UTF8,UTF16,GB2312,GBK等等。
 
在確認了編碼方式後,我們對通過BarcodeEngine 引擎讀取出的BarcodeData ,不用value屬性直接去獲取它的對應字符串。因爲這樣默認是得到的按照ascii碼編碼來翻譯出的字符串,自然會有各種亂碼,leadtools提供了另一個方法GetData(),通過這個方法可以獲取原始的byte[] 數據。然後按照對應的編碼方式進行轉換,即可得到對應的中文字符串。
 
下面的例子中是針對UTF8編碼的中文二維碼進行識別的代碼,大家可以在編譯以後,對文末的二維碼進行識別。
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Forms; 
using Leadtools.Barcode; 
using Leadtools.ImageProcessing; 

public void BarcodeData_GetDataExample() 
{ 
string imageFileName = Path.Combine(LEAD_VARS.ImagesDir, "Barcode2.tif"); 

// Create a Barcode engine 
BarcodeEngine engine = new BarcodeEngine(); 

// Load the image 
using (RasterCodecs codecs = new RasterCodecs()) 
{ 
using (RasterImage image = codecs.Load(imageFileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1)) 
{ 
// Read the first QR barcode from the image 
BarcodeData data = engine.Reader.ReadBarcode(image, LogicalRectangle.Empty, BarcodeSymbology.QR); 

// Show the barcode data found (if any) 
if (data != null) 
{ 
Console.WriteLine("Raw data is:"); 
byte[] bytes = data.GetData(); 
if (bytes != null) 
{ 
string text = System.Text.Encoding.UTF8.GetString(bc); 
Console.WriteLine(text);
} 
else 
{ 
Console.WriteLine("Empty"); 
} 
} 
else 
{ 
Console.WriteLine("No barcode found"); 
} 
} 
} 
}

發佈了269 篇原創文章 · 獲贊 15 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章