Chinaunix首页 | 论坛 | 博客
  • 博客访问: 410008
  • 博文数量: 159
  • 博客积分: 372
  • 博客等级: 一等列兵
  • 技术积分: 1693
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-13 17:05
个人简介

致力于图形处理和移动开发。

文章分类

全部博文(159)

文章存档

2014年(77)

2013年(67)

2012年(15)

我的朋友

分类: C#/.net

2013-12-16 10:56:04

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.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)

 

阅读(758) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~