LEADTOOLS使用教程:LEADTOOLS Barcode用法
LEADTOOLS可以准确而快速地读取各种一维和二维条码(类型)及其子类型。LEADTOOLS Barcode支持100多种条形码的读写,其中包括所有主要的1D和2D条形码。
LEADTOOLS Barcode SDK技术亮点:
- 可用于开发Windows应用程序,并包含本地的32位和64位2D条形码二进制文件;
- 包含许多有源代码的演示项目,这些源代码包含C, Visual C++ (MFC), VB.NET 和C#的版本;
- 支持多线程;
- 支持广泛的1D条码,包括UPC/EAN, Codabar, GS1 Databa和USPS 4-State;
- 支持广泛的2D条码,包括PDF417, MicroPDF417, Datamatrix和QR
- 快速条形码检测和解码;
- 查找整个图像区域或特定区域的条形码;
- 每页阅读条形码的数量不受限;
- 任何方向和旋转角度检测条形码;
- 读写黑白区域或者彩色图像中的条码;
使用LEADTOOLS Barcode
LEADTOOLS Barcode支持可以通过Leadtools.Barcode.dll程序集来访问。实际读/写的条形码包含在动态加载和运行时访问的单独程序集中。这些组件是原生.NET和Silverlight二进制文件,可以直接添加到您的项目作为部署的参考。下表列出来条码支持的程序集以及功能:
读取条形码
要读取条码,首选需要获取存储在BarcodeEngine.Reader属性中的Leadtools.Barcode.BarcodeReader对象实例。然后调用BarcodeReader.ReadBarcode 或BarcodeReader.ReadBarcodes方法以传递Leadtools.RasterImage对象。这些方法会返回一个或一个包含了条形码数据的Leadtools.Barcode.BarcodeData对象的数组。
// 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
当找到条形码或发生错误时,BarcodeReader.ReadSymbology事件被激活。 Leadtools.Barcode.BarcodeSymbology枚举中定义了所支持的条形码枚举类型。 下列代码片段可搜索并试图从图像中读取单个QR码:
BarcodeData data = barcodeEngineInstance.Reader.ReadBarcode( theImage, \\ The RasterImage object LogicalRectangle.Empty, \\ Search rectangle, Empty means all image BarcodeSymbology.QR); \\ Symbology, only QR
通过传递Leadtools.Barcode.BarcodeReadOptions中的一个或者多个对象,微调条形码读取。例如,改变条形码阅读器的默认选项,将搜索方向改为水平方向和垂直于条形码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);
编写条形码
要将条形码写入图像中,首先需要获取储存在BarcodeEngine.Writer属性中的Leadtools.Barcode.BarcodeWriter对象实例。然后传递 Leadtools.RasterImage对象以调用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);
使用一个或多个Leadtools.Barcode.BarcodeWriteOptions衍生类添加额外功能至编写操作中。下列代码可使后续的所有编写操作能显示出条形码文本:
OneDBarcodeWriteOptions options = barcodeEngineInstance.Writer.GetDefaultOptions(BarcodeSymbology.UPCA) as OneDBarcodeWriteOptions; options.TextPosition = OneDBarcodeTextPosition.Default; // Write it with default options barcodeEngineInstance.Writer.WriteBarcode(theImage, data, null);
编写条码时,你可能想要计算条形码的像素尺寸,并在提交前进行微调。可使用BarcodeWriter.CalculateBarcodeDataBounds方法来实现这一点。
条码类型
LEADTOOLS支持读写以下条码类型:
- Linear barcodes (1D)
- PDF417 (2D)
- MicroPDF417 (2D)
- Datamatrix (2D)
- QR (2D)
每个主要条码类型下包含一个或者多个条码分类,如:
线性(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)