轉(zhuǎn)帖|使用教程|編輯:黃竹雯|2016-07-13 14:27:56.000|閱讀 589 次
概述:LeadTools作為全球領(lǐng)先的圖像處理開(kāi)發(fā)包,在條碼處理方面功能非常強(qiáng)大。LEADTOOLS Barcode SDK是世界上首屈一指的工具包,它用于開(kāi)發(fā)圖像中一維和二維條碼讀寫(xiě)的應(yīng)用程序。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
相關(guān)鏈接:
LeadTools作為全球領(lǐng)先的圖像處理開(kāi)發(fā)包,在條碼處理方面功能非常強(qiáng)大。LEADTOOLS Barcode SDK是世界上首屈一指的工具包,它用于開(kāi)發(fā)圖像中一維和二維條碼讀寫(xiě)的應(yīng)用程序。對(duì)于.NET(C# & VB.NET)、C/C++、Java和Web開(kāi)發(fā)者來(lái)說(shuō),它是快速的、具有高準(zhǔn)確和可靠性的條碼引擎。LeadTools幫助程序員在記錄時(shí)間內(nèi)創(chuàng)建令人驚嘆的,功能全面的條碼應(yīng)用程序。LeadTools綜合支持100余種條碼類(lèi)型和子類(lèi)型,如UPC、EAN、Code 128、數(shù)據(jù)矩陣和PDF417等。
本博文概覽:
條碼(barcode)是將寬度不等的多個(gè)黑條和空白,按照一定的編碼規(guī)則排列,用以表達(dá)一組信息的圖形標(biāo)識(shí)符。常見(jiàn)的條形碼是由反射率相差很大的黑條(簡(jiǎn)稱(chēng)條)和白條(簡(jiǎn)稱(chēng)空)排成的平行線(xiàn)圖案。條形碼可以標(biāo)出物品的生產(chǎn)國(guó)、制造廠家、商品名稱(chēng)、生產(chǎn)日期、圖書(shū)分類(lèi)號(hào)、郵件起止地點(diǎn)、類(lèi)別、日期等信息,因而在商品流通、圖書(shū)管理、郵政管理、銀行系統(tǒng)等許多領(lǐng)域都得到了廣泛的應(yīng)用。
1. 打開(kāi)Visual Studio .NET。
2. 點(diǎn)擊 文件->新建->項(xiàng)目…。
3. 打開(kāi)新建項(xiàng)目對(duì)話(huà)框后,在模板中選擇“Visual C#”或“Visual Basic”,隨后選擇“Windows窗體應(yīng)用程序”。在名稱(chēng)欄中輸入項(xiàng)目名稱(chēng)“Reading and Writing Barcodes”,并使用“瀏覽”按鈕選擇您工程的存儲(chǔ)路徑,點(diǎn)擊“確定”。
4. 在“解決方案資源管理器”中,右擊“引用”,選擇“添加引用”。根據(jù)當(dāng)前工程的 Framework 版本和生成目標(biāo)平臺(tái),選擇添加相應(yīng)的LeadTools控件,例如工程中的版本為 Framework 4.0、生成目標(biāo)平臺(tái)是 x86,則瀏覽選擇Leadtools For .NET文件夾” \Bin\DotNet4\Win32”,選擇以下的DLL“:
點(diǎn)擊“確定”按鈕,將以上所有的DLL添加到應(yīng)用程序中。
5. 切換到Form1代碼視圖,將以下代碼添加至文件開(kāi)始:
[C#] using Leadtools; using Leadtools.Codecs; using Leadtools.Forms; using Leadtools.Barcode;
6. 拖拽三個(gè)button至Form1。根據(jù)下表設(shè)置它們的屬性:
Name | Text |
---|---|
loadImageButton | 加載圖像 |
readBarcodesButton | 讀取條碼 |
writeBarcodeButton | 編寫(xiě)條碼 |
7. 將以下私有變量添加至Form1:
[C#] private BarcodeEngine barcodeEngineInstance; // 條碼引擎 private RasterImage theImage; // 當(dāng)前加載圖像 private string imageFileName; // 最后加載的圖像,用于編寫(xiě)條碼
8. 將以下初始化代碼添加至Form1:
[C#] protected override void OnLoad(EventArgs e) { // 用LEADTOOLS提供的解鎖密鑰替換或使用評(píng)估版內(nèi)核 //解鎖一維條碼的讀取 string MY_LICENSE_FILE = "d:\\temp\\TestLic.lic"; string MY_DEVELOPER_KEY = "xyz123abc"; RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DEVELOPER_KEY); // 創(chuàng)建BarcodeEngine實(shí)例 barcodeEngineInstance = new BarcodeEngine(); base.OnLoad(e); }
9. 將以下清除代碼添加至Form1:
[C#] protected override void OnFormClosed(FormClosedEventArgs e) { // 刪除我們的資源 if(theImage != null) { theImage.Dispose(); } base.OnFormClosed(e); }
10. 將以下代碼添加至loadImageButton按鈕的Click事件句柄:
[C#] private void loadImageButton_Click(object sender, EventArgs e) { using(OpenFileDialog dlg = new OpenFileDialog()) { if(dlg.ShowDialog(this) == System.Windows.Forms.DialogResult.OK) { fileName = dlg.FileName; } else { return; } } // 加載圖像并顯示 using(RasterCodecs codecs = new RasterCodecs()) { RasterImage newImage = codecs.Load(fileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1); //如果有舊圖像,將其刪除 if(theImage != null) { theImage.Dispose(); } theImage = newImage; imageFileName = fileName; } }
11. 將以下代碼添加至readBarcodesButton按鈕的Click事件句柄:
[C#] private void readBarcodesButton_Click(object sender, EventArgs e) { if(theImage == null) { MessageBox.Show("請(qǐng)先加載圖像"); return; } try { // 讀取所有條碼。 // 第一個(gè)參數(shù)為一個(gè)圖像,我們將從這個(gè)圖像中讀取條碼。 // 第二個(gè)參數(shù)為搜索矩形。空矩形表示整個(gè)圖像。 // 第三個(gè)參數(shù)為可讀取條碼的最大數(shù)目。0表示。 // 最后一個(gè)參數(shù)為一個(gè)我們感興趣的BarcodeSymbology數(shù)組。可傳參null(或不傳值)表示我們希望讀取 // 所有可用的條碼(這些條碼均來(lái)自于這個(gè)圖像,并有目前的解鎖支持機(jī)制支持) BarcodeData[] dataArray = barcodeEngineInstance.Reader.ReadBarcodes(theImage, LogicalRectangle.Empty, 0, null); StringBuilder sb = new StringBuilder(); sb.AppendFormat("共有{0}個(gè)條碼", dataArray.Length); sb.AppendLine(); for(int i = 0; i < dataArray.Length; i++) { BarcodeData data = dataArray[i]; sb.AppendFormat("符號(hào): {0}, 位置: {1}, 數(shù)據(jù): {2}", data.Symbology.ToString(), data.Bounds.ToString(), data.Value); sb.AppendLine(); } MessageBox.Show(sb.ToString()); } catch(Exception ex) { MessageBox.Show(ex.Message); } }
12. 將以下代碼添加至writeBarcodeButton按鈕的Click事件句柄:
[C#] private void writeBarcodeButton_Click(object sender, EventArgs e) { if(theImage == null) { return; } // 創(chuàng)建一個(gè) UPC A 條碼 BarcodeData data = new BarcodeData(); data.Symbology = BarcodeSymbology.UPCA; data.Value = "01234567890"; data.Bounds = new LogicalRectangle(10, 10, 600, 200, LogicalUnit.Pixel); // 設(shè)置選項(xiàng)啟用錯(cuò)誤檢查,并將文本顯示在條碼的下方 OneDBarcodeWriteOptions options = new OneDBarcodeWriteOptions(); options.EnableErrorCheck = true; try { // 編寫(xiě)條碼 barcodeEngineInstance.Writer.WriteBarcode(theImage, data, options); // 保存圖像 string dir = System.IO.Path.GetDirectoryName(imageFileName); string name = System.IO.Path.GetFileNameWithoutExtension(imageFileName); string saveFileName = System.IO.Path.Combine(dir, name + "_WriteBarcode.tif"); using(RasterCodecs codecs = new RasterCodecs()) { codecs.Save(theImage, saveFileName, RasterImageFormat.Tif, theImage.BitsPerPixel); } MessageBox.Show(string.Format("此條碼已編寫(xiě)成功,并保存至 {0}", saveFileName)); } catch(Exception ex) { MessageBox.Show(ex.Message); } }
13. 編譯并運(yùn)行程序。以下為運(yùn)行結(jié)果。
首先點(diǎn)擊“加載圖像”按鈕,效果如下圖:
隨后若您點(diǎn)擊 “讀取條碼”按鈕則可讀取出所有條碼并顯示信息,效果如下圖:
若您點(diǎn)擊“編寫(xiě)條碼”按鈕則可在圖像中編寫(xiě)一個(gè)一維UPC A條碼并保存,效果如下圖:
DEMO下載:
文章轉(zhuǎn)自:葡萄城控件產(chǎn)品博客,//blog.gcpowertools.com.cn
如果你希望親自體驗(yàn)一下LeadTools讀取和編寫(xiě)條碼的功能,不妨查看并免費(fèi)下載LeadTools試用版自己來(lái)試試。
如需幫助,請(qǐng)聯(lián)系!
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn