LEADTOOLS使用教程:LEADTOOLS Barcode用法
LEADTOOLS可以準(zhǔn)確而快速地讀取各種一維和二維條碼(類型)及其子類型。LEADTOOLS Barcode支持100多種條形碼的讀寫,其中包括所有主要的1D和2D條形碼。
LEADTOOLS Barcode SDK技術(shù)亮點(diǎn):
- 可用于開發(fā)Windows應(yīng)用程序,并包含本地的32位和64位2D條形碼二進(jìn)制文件;
- 包含許多有源代碼的演示項(xiàng)目,這些源代碼包含C, Visual C++ (MFC), VB.NET 和C#的版本;
- 支持多線程;
- 支持廣泛的1D條碼,包括UPC/EAN, Codabar, GS1 Databa和USPS 4-State;
- 支持廣泛的2D條碼,包括PDF417, MicroPDF417, Datamatrix和QR
- 快速條形碼檢測(cè)和解碼;
- 查找整個(gè)圖像區(qū)域或特定區(qū)域的條形碼;
- 每頁(yè)閱讀條形碼的數(shù)量不受限;
- 任何方向和旋轉(zhuǎn)角度檢測(cè)條形碼;
- 讀寫黑白區(qū)域或者彩色圖像中的條碼;
使用LEADTOOLS Barcode
LEADTOOLS Barcode支持可以通過(guò)Leadtools.Barcode.dll程序集來(lái)訪問(wèn)。實(shí)際讀/寫的條形碼包含在動(dòng)態(tài)加載和運(yùn)行時(shí)訪問(wèn)的單獨(dú)程序集中。這些組件是原生.NET和Silverlight二進(jìn)制文件,可以直接添加到您的項(xiàng)目作為部署的參考。下表列出來(lái)?xiàng)l碼支持的程序集以及功能:
讀取條形碼
要讀取條碼,首選需要獲取存儲(chǔ)在BarcodeEngine.Reader屬性中的Leadtools.Barcode.BarcodeReader對(duì)象實(shí)例。然后調(diào)用BarcodeReader.ReadBarcode 或BarcodeReader.ReadBarcodes方法以傳遞Leadtools.RasterImage對(duì)象。這些方法會(huì)返回一個(gè)或一個(gè)包含了條形碼數(shù)據(jù)的Leadtools.Barcode.BarcodeData對(duì)象的數(shù)組。
// Read all barcodes in the image BarcodeData[] dataArray = barcodeEngineInstance.Reader.ReadBarcodes( theImage, \\ The RasterImage object LogicalRectangle.Empty, \\ Search rectangle, Empty means all image 0, \\ Maximum number of barcodes to return, 0 means all barcodes found null); \\ Array of BarcodeSymbology we are interested in, null means all
當(dāng)找到條形碼或發(fā)生錯(cuò)誤時(shí),BarcodeReader.ReadSymbology事件被激活。 Leadtools.Barcode.BarcodeSymbology枚舉中定義了所支持的條形碼枚舉類型。 下列代碼片段可搜索并試圖從圖像中讀取單個(gè)QR碼:
BarcodeData data = barcodeEngineInstance.Reader.ReadBarcode( theImage, \\ The RasterImage object LogicalRectangle.Empty, \\ Search rectangle, Empty means all image BarcodeSymbology.QR); \\ Symbology, only QR
通過(guò)傳遞Leadtools.Barcode.BarcodeReadOptions中的一個(gè)或者多個(gè)對(duì)象,微調(diào)條形碼讀取。例如,改變條形碼閱讀器的默認(rèn)選項(xiàng),將搜索方向改為水平方向和垂直于條形碼PDF417,示例如下:
// Get the default PDF417 read options PDF417BarcodeReadOptions options = barcodeEngineInstance.Reader.GetDefaultOptions(BarcodeSymbology.PDF417); // Change the search direction options.SearchDirection = BarcodeSearchDirection.HorizontalAndVertical; // Read a PDF417 barcode from the image BarcodeData data = barcodeEngineInstance.Reader.ReadBarcode(theImage, LogicalRectangle.Empty, BarcodeSymbology.PDF417);
編寫條形碼
要將條形碼寫入圖像中,首先需要獲取儲(chǔ)存在BarcodeEngine.Writer屬性中的Leadtools.Barcode.BarcodeWriter對(duì)象實(shí)例。然后傳遞 Leadtools.RasterImage對(duì)象以調(diào)用BarcodeWriter.WriterBarcode,代碼如下:
// Create a UPC A barcode BarcodeData data = new BarcodeData(); data.Symbology = BarcodeSymbology.UPCA; data.Value = "01234567890"; data.Bounds = new LogicalRectangle(10, 10, 600, 200, LogicalUnit.Pixel); // Write it with default options barcodeEngineInstance.Writer.WriteBarcode(theImage, data, null);
使用一個(gè)或多個(gè)Leadtools.Barcode.BarcodeWriteOptions衍生類添加額外功能至編寫操作中。下列代碼可使后續(xù)的所有編寫操作能顯示出條形碼文本:
OneDBarcodeWriteOptions options = barcodeEngineInstance.Writer.GetDefaultOptions(BarcodeSymbology.UPCA) as OneDBarcodeWriteOptions; options.TextPosition = OneDBarcodeTextPosition.Default; // Write it with default options barcodeEngineInstance.Writer.WriteBarcode(theImage, data, null);
編寫條碼時(shí),你可能想要計(jì)算條形碼的像素尺寸,并在提交前進(jìn)行微調(diào)??墒褂肂arcodeWriter.CalculateBarcodeDataBounds方法來(lái)實(shí)現(xiàn)這一點(diǎn)。
條碼類型
LEADTOOLS支持讀寫以下條碼類型:
- Linear barcodes (1D)
- PDF417 (2D)
- MicroPDF417 (2D)
- Datamatrix (2D)
- QR (2D)
每個(gè)主要條碼類型下包含一個(gè)或者多個(gè)條碼分類,如:
線性(1D)條碼:
- EAN 13
- EAN 8
- UPC A
- UPC E
- Code 3 of 9
- Code 128
- Code 93
- Interleaved 2 of 5
- CODABAR
- UCCEAN 128
- EAN EXT 5
- EAN EXT 2
- MSI
- Code 11
- Standard 2 Of 5
- GS1 Databar (formerly RSS14) Omnidirectional
- GS1 Databar (formerly RSS14) Truncated
- GS1 Databar (formerly RSS14) Limited
- GS1 Databar (formerly RSS14) Expanded
- Patch Code
- Postnet
- Planet
- Australian Post - 4 State
- Royal Mail (RM4SCC)
- GS1 Databar (formerly RSS14) Stacked
- GS1 Databar (formerly RSS14) Stacked Omnidirectional
- GS1 Databar (formerly RSS14) Expanded Stacked
2D:
- PDF417
- MicroPDF417
- Datamatrix (with multiple symbol sizes)
- QR (with multiple symbol models)