编写条形码界限和XModule

条形码的形状和形式多种多样,但他们有一个“符号”的概念。这可以是一个竖线在一维线性条形码或一个点在一个2 d条形码。下面是一些常见的条形码的例子:

UPC-A
QR

UPC-A的例子。一个典型的一维条码

QR的例子。一个典型的二维条形码

的宽度称为象征X模块的条码,通常表达一个1/1000英寸单位。这个值必须足够的正确大小的软件和专用的条形码阅读器读取条形码。一个典型的X模块值是0.03英寸。在成像方面,这个值是依赖于图像的分辨率,例如图像与300 DPI的分辨率;这个值是9像素等等。值为2像素通常由软件最小X模块大小可读。

条形码的另一个特点是宽度和高度之间的纵横比。一些条形码放松规则,如UPC-A,而另一些则限制如QR必须始终有一个正方形的形状。

编写条形码时,软件必须确保最终结果满足上述条件。否则,最后条形码图像不会读。

BarcodeWriter对象包含WriteBarcode方法用于编写条形码图像。该方法接受一个对象的类型BarcodeData它包含的符号、数据和条形码的位置和大小。在指定的位置和大小BarcodeData.Bounds财产。

所有在这个帮助主题使用以下代码片段:

一维条形码

在本节中讨论以下属性:

一维条形码写作时,你可以设置条形码的大小在两种模式:

1维条形码没有X模块

在这种模式下,指导条形码作家计算X模块从指定的宽度和高度值。完成,设置“使用X模块”属性值,并设置所需的宽度和高度BarcodeData.Bounds

例子:编写一个UPC-A条码图像的宽度和高度= 400×400像素。

VB
昏暗的数据作为BarcodeData = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA)数据。边界=LeadRect (0, 0, 400, 400)昏暗的writeOptions作为OneDBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、OneDBarcodeWriteOptions)'确定X模块是禁用的writeOptions。UseXModule =barcodeWriter。WriteBarcode(image, data, writeOptions)
c#
BarcodeData data = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA);数据。边界=LeadRect (0, 0, 400, 400);OneDBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions (data.Symbology)作为OneDBarcodeWriteOptions;/ /确保X模块是禁用的writeOptions。UseXModule =;barcodeWriter。WriteBarcode(image, data, writeOptions);

结果:条形码大小是400 * 400像素。

请注意,并不是所有的一维条码类型允许您指定任意长宽比(宽度和高度值),一些条形码标准状态,条形码的宽度和高度必须有一个具体的长宽比,例如如果你改变上面的代码使用POSTNET条码类型,结果将是不同的。

例子:编写一个POSTNET条码图像的宽度和高度= 400×400像素。

VB
昏暗的数据作为BarcodeData = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.PostNet)数据。边界=LeadRect (0, 0, 400, 400)昏暗的writeOptions作为PostNetPlanetBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、PostNetPlanetBarcodeWriteOptions)'确定X模块是禁用的writeOptions。UseXModule =barcodeWriter。WriteBarcode(image, data, writeOptions)
c#
BarcodeData data = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.PostNet);数据。边界=LeadRect (0, 0, 400, 400);PostNetPlanetBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions (data.Symbology)作为PostNetPlanetBarcodeWriteOptions;/ /确保X模块是禁用的writeOptions。UseXModule =;barcodeWriter。WriteBarcode(image, data, writeOptions);

结果:条形码由30像素大小是400。

条码的高度范围设置为0指示引擎计算条形码高度的宽度根据预定义的长宽比。

例子:编写一个UPC-A条码图像的宽度和高度= 400 0像素。

VB
昏暗的数据作为BarcodeData = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA)数据。边界=400年LeadRect (0, 0, 0)昏暗的writeOptions作为OneDBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、OneDBarcodeWriteOptions)'确定X模块是禁用的writeOptions。UseXModule =barcodeWriter。WriteBarcode(image, data, writeOptions)
c#
BarcodeData data = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA);数据。边界=LeadRect (0, 0, 400, 0);OneDBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions (data.Symbology)作为OneDBarcodeWriteOptions;/ /确保X模块是禁用的writeOptions。UseXModule =;barcodeWriter。WriteBarcode(image, data, writeOptions);

结果:条形码大小是400 * 134像素

一维条形码都有一个默认的长宽比1/3 PatchCode除外,它的宽高比为5。

在所有上述模式,引擎将计算X从指定宽度值模块。如果结果值是非法的(小于0.03英寸),然后一个异常的类型BarcodeException宽度编码集BarcodeExceptionCode.InvalidWidthBarcodeExceptionCode.InvalidHeight将抛出。

例子:编写一个UPC-A条码图像的宽度和高度,太小(10×10像素)。

VB
昏暗的数据作为BarcodeData = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA)数据。边界=LeadRect (0, 0, 10、10)昏暗的writeOptions作为OneDBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、OneDBarcodeWriteOptions)'确定X模块是禁用的writeOptions。UseXModule =barcodeWriter。WriteBarcode(image, data, writeOptions)
c#
BarcodeData data = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA);数据。边界=LeadRect (0, 0, 10、10);OneDBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions (data.Symbology)作为OneDBarcodeWriteOptions;/ /确保X模块是禁用的writeOptions。UseXModule =;barcodeWriter。WriteBarcode(image, data, writeOptions);

结果:BarcodeException代码=BarcodeExceptionCode.InvalidWidthBarcodeExceptionCode.InvalidHeight将抛出。

一维条形码与X模块

在这种模式下,使用一个特定的X模块的价值。完成,设置“使用X模块”属性值真正的

例子:写一个UPC-A条码图像的XModule = 0.03英寸。

VB
昏暗的数据作为BarcodeData = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA)数据。边界=LeadRect (0, 0, 0, 0)昏暗的writeOptions作为OneDBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、OneDBarcodeWriteOptions)“使用X模块writeOptions。UseXModule =真正的writeOptions。XModule = 30barcodeWriter。WriteBarcode(image, data, writeOptions)
c#
BarcodeData data = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA);数据。边界=LeadRect (0, 0, 0, 0);OneDBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions (data.Symbology)作为OneDBarcodeWriteOptions;/ /使用X模块writeOptions。UseXModule =真正的;writeOptions。XModule = 30;barcodeWriter。WriteBarcode(image, data, writeOptions);

结果:条形码的宽度是由数据的大小(数量的酒吧和空间要求,文本选择,等等)。高度计算基于符号学的首选的长宽比。

指定一个宽度或高度(或设置一个值,把其他为0)当使用X模块。在这种情况下,使用这些边界的最大宽度和高度的条形码,如果生成的条形码的宽度或高度大于指定的值,然后一个异常的类型BarcodeException宽度设置为BarcodeExceptionCode.InvalidWidthBarcodeExceptionCode.InvalidHeight将抛出。

例子:写一个UPC-A条码图像的XModule = 0.03英寸,范围太小了。

VB
昏暗的数据作为BarcodeData = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA)数据。边界=LeadRect (0, 0, 10、10)昏暗的writeOptions作为OneDBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、OneDBarcodeWriteOptions)“使用X模块writeOptions。UseXModule =真正的writeOptions。XModule = 30barcodeWriter。WriteBarcode(image, data, writeOptions)
c#
BarcodeData data = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA);数据。边界=LeadRect (0, 0, 10、10);OneDBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions (data.Symbology)作为OneDBarcodeWriteOptions;/ /使用X模块writeOptions。UseXModule =真正的;writeOptions。XModule = 30;barcodeWriter。WriteBarcode(image, data, writeOptions);

结果:BarcodeException代码=BarcodeExceptionCode.InvalidWidthBarcodeExceptionCode.InvalidHeight将抛出。

一维条形码的位置

左边和顶部的位置BarcodeData.Bounds写作时只使用一维条形码。

例子:写UPC-A条形码图像左上角100,200年400到100年的位置和大小。以像素为单位。

VB
昏暗的数据作为BarcodeData = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA)数据。边界=LeadRect (100、200、400、100)昏暗的writeOptions作为OneDBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、OneDBarcodeWriteOptions)'确定X模块是禁用的writeOptions。UseXModule =barcodeWriter。WriteBarcode(image, data, writeOptions)
c#
BarcodeData data = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA);数据。边界=LeadRect (100, 200, 400, 100);OneDBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions (data.Symbology)作为OneDBarcodeWriteOptions;/ /确保X模块是禁用的writeOptions。UseXModule =;barcodeWriter。WriteBarcode(image, data, writeOptions);

结果:条形码在100、200年,大小400 * 100像素。

BarcodeData.Bounds属性的类型LeadRect。这允许您指定的位置和大小和像素以外的单位。

例子:写一个UPC-A条形码在位置1、2英寸大小= 3 * 1英寸。

VB
私人共享函数InchesToPixels (按值传递矩形作为LeadRectD,按值传递dpiX作为整数,按值传递dpiY作为整数)作为LeadRect如果dpiX = 0然后dpiX = 96结束如果如果dpiY = 0然后dpiY = 96结束如果昏暗的像素作为var = LeadRectD.FromLTRB(矩形。左* dpiX / 96.0, rect.Top * dpiY / 96.0, rect.Right * dpiX / 96.0, rect.Bottom * dpiY / 96.0)返回pixels.ToLeadRect ()结束函数昏暗的图像作为RasterImage = RasterImage。300年创建(100、100、24日,RasterColor.White)昏暗的barcodeWriter作为BarcodeWriter =没有什么昏暗的数据作为BarcodeData = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA)数据。边界= InchesToPixels (LeadRectD(1、2、3、1),形象。XResolution,形象。YResolution)昏暗的writeOptions作为OneDBarcodeWriteOptions = TryCast (barcodeWriter.GetDefaultOptions (data.Symbology) OneDBarcodeWriteOptions)'确定X模块是禁用的writeOptions。UseXModule =barcodeWriter。WriteBarcode(image, data, writeOptions)
c#
私人静态LeadRect InchesToPixels (LeadRectD矩形,intdpiX,intdpiY){如果(dpiX = = 0) dpiX = 96;如果(dpiY = = 0) dpiY = 96;var像素= LeadRectD.FromLTRB (rect.Left * dpiX / 96.0,rect.Top * dpiY / 96.0,rect.Right * dpiX / 96.0,rect.Bottom * dpiY / 96.0);返回pixels.ToLeadRect ();}BarcodeData data = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA);数据。边界= InchesToPixels (LeadRectD(1、2、3、1),形象。XResolution,形象。YResolution);OneDBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions (data.Symbology)作为OneDBarcodeWriteOptions;/ /确保X模块是禁用的writeOptions。UseXModule =;barcodeWriter。WriteBarcode(image, data, writeOptions);

结果:条形码在1、2英寸大小3×1英寸。

二维条形码

在本节中讨论以下属性:

所有的二维条形码写操作都需要一个X模块。的宽度和高度BarcodeData.Bounds只是作为最大的条形码的宽度和高度。

例子:使用没有编写QR指定宽度和高度。

VB
昏暗的数据作为QRBarcodeData =DirectCast(BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.QR)、QRBarcodeData)数据。边界=LeadRect (0, 0, 0, 0)昏暗的writeOptions作为QRBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、QRBarcodeWriteOptions)“集合X模块writeOptions。XModule = 30barcodeWriter。WriteBarcode(image, data, writeOptions)
c#
QRBarcodeData data = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.QR)作为QRBarcodeData;数据。边界=LeadRect (0, 0, 0, 0);QRBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions (data.Symbology)作为QRBarcodeWriteOptions;/ /设置X模块writeOptions。XModule = 30;barcodeWriter。WriteBarcode(image, data, writeOptions);

结果:条形码的大小计算XModule(在这种情况下约一英寸)。

大多数二维条形码都有严格的宽度和高度长宽比。例如,QR条形码必须广场(宽度和高度平等),所以只使用这些值的最大宽度和高度条形码,如果生成的条形码的宽度或高度大于指定的值,然后一个异常的类型BarcodeException,宽度设置为BarcodeExceptionCode.InvalidWidthBarcodeExceptionCode.InvalidHeight,就会抛出

例子:写一个QR条码图像的XModule = 0.03英寸和范围太小了。

VB
昏暗的数据作为QRBarcodeData =DirectCast(BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.QR)、QRBarcodeData)数据。边界=LeadRect (0, 0, 10、10)昏暗的writeOptions作为QRBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、QRBarcodeWriteOptions)“使用默认XModule, 30岁barcodeWriter。WriteBarcode(image, data, writeOptions)
c#
QRBarcodeData data = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.QR)作为QRBarcodeData;数据。边界=LeadRect (0, 0, 10、10);QRBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions (data.Symbology)作为QRBarcodeWriteOptions;/ /使用默认XModule, 30岁barcodeWriter。WriteBarcode(image, data, writeOptions);

结果:BarcodeException代码=BarcodeExceptionCode.InvalidWidthBarcodeExceptionCode.InvalidHeight将抛出。

二维条形码也支持一个对齐值,可用于控制范围内的条码编写。

例子:写一个QR条形码中间的形象。

VB
昏暗的数据作为QRBarcodeData =DirectCast(BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.QR)、QRBarcodeData)使用的所有图像数据。边界=LeadRect(0, 0,形象。ImageWidth image.ImageHeight)昏暗的writeOptions作为QRBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、QRBarcodeWriteOptions)的条形码在中间水平和垂直对齐writeOptions。HorizontalAlignment = BarcodeAlignment.CenterwriteOptions。VerticalAlignment = BarcodeAlignment.CenterbarcodeWriter。WriteBarcode(image, data, writeOptions)
c#
QRBarcodeData data = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.QR)作为QRBarcodeData;/ /使用所有图像数据。边界=LeadRect(0, 0,形象。ImageWidth image.ImageHeight);QRBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions (data.Symbology)作为QRBarcodeWriteOptions;/ /条形码在中间水平和垂直对齐writeOptions。HorizontalAlignment = BarcodeAlignment.Center;writeOptions。VerticalAlignment = BarcodeAlignment.Center;barcodeWriter。WriteBarcode(image, data, writeOptions);

结果:条形码为中心的形象。

例子:写一个QR条码图像的右下角。

VB
昏暗的数据作为QRBarcodeData =DirectCast(BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.QR)、QRBarcodeData)使用的所有图像数据。边界=LeadRect(0, 0,形象。ImageWidth image.ImageHeight)昏暗的writeOptions作为QRBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、QRBarcodeWriteOptions)的底部角落的条形码一致writeOptions。HorizontalAlignment = BarcodeAlignment.FarwriteOptions。VerticalAlignment = BarcodeAlignment.FarbarcodeWriter。WriteBarcode(image, data, writeOptions)
c#
QRBarcodeData data = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.QR)作为QRBarcodeData;/ /使用所有图像数据。边界=LeadRect(0, 0,形象。ImageWidth image.ImageHeight);QRBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions (data.Symbology)作为QRBarcodeWriteOptions;/ /底部角落的条形码一致writeOptions。HorizontalAlignment = BarcodeAlignment.Far;writeOptions。VerticalAlignment = BarcodeAlignment.Far;barcodeWriter。WriteBarcode(image, data, writeOptions);

结果:底部条形码图像的右边缘。

PDF417和MicroPDF417条形码允许您设置长宽比的“象征”。这允许您创建条形码与任何水平和垂直大小。指PDF417BarcodeWriteOptions.XModuleAspectRatioMicroPDF417BarcodeWriteOptions.XModuleAspectRatio

计算条形码的尺寸

BarcodeWriter类包含CalculateBarcodeDataBounds方法允许你计算条形码大小根据指定的选项。

例子:计算QR条形码的大小在X 0.03模块。

VB
昏暗的数据作为QRBarcodeData =DirectCast(BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.QR)、QRBarcodeData)“什么并不重要数据的价值。界限。它将被改变昏暗的writeOptions作为QRBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、QRBarcodeWriteOptions)“集合X模块writeOptions。XModule = 30“计算像素的大小如果写入这个形象barcodeWriter.CalculateBarcodeDataBounds (LeadRect(0, 0,形象。ImageWidth image.ImageHeight)的形象。XResolution,形象。YResolution、数据writeOptions)Console.WriteLine (“{0},{1}像素”,data.Bounds。宽度,data.Bounds.Height)
c#
QRBarcodeData data = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.QR)作为QRBarcodeData;/ /什么并不重要数据的价值。界限。它将被改变QRBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions (data.Symbology)作为QRBarcodeWriteOptions;/ /设置X模块writeOptions。XModule = 30;/ /计算像素的大小如果写入这个形象barcodeWriter.CalculateBarcodeDataBounds (LeadRect(0, 0,形象。ImageWidth image.ImageHeight)的形象。XResolution,形象。YResolution、数据writeOptions);Console.WriteLine (“{0},{1}像素”,data.Bounds。宽度,data.Bounds.Height);

结果:一个图像的300 DPI,结果是261×261像素。

计算条形码尺寸适用于所有条形码(1 d和2 d)和所有选项(有或没有X模块)。

注意条形码大小可能包括几个填充周边地区条形码所定义的标准。

例子:创建一个为QR TIF文件对象。

VB
昏暗的数据作为QRBarcodeData =DirectCast(BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.QR)、QRBarcodeData)在这个例子中我们将使用默认选项的计算在300 DPI的条形码大小(以像素为单位)昏暗的决议作为整数= 300barcodeWriter.CalculateBarcodeDataBounds (LeadRect。空的,分辨率,分辨率、数据没有什么)创建一个RasterImage对象的大小昏暗的boundsPixels作为LeadRect = data.Bounds。ToRectangle(分辨率,分辨率)使用图像作为RasterImage (RasterMemoryFlags。传统,boundsPixels。宽度,boundsPixels。高度,1,RasterByteOrder。Rgb、RasterViewPerspective.TopLeft没有什么,IntPtr。0,0)“设置分辨率的形象。XResolution =决议的形象。YResolution =决议“填充白色昏暗的cmd作为Leadtools.ImageProcessing.FillCommand (RasterColor.FromKnownColor (RasterKnownColor.White))cmd.Run(图片)“写的条码图像barcodeWriter。WriteBarcode(image, data,没有什么)气管无名动脉瘘管的“保存它使用编解码器作为RasterCodecs ()codecs.Save(图片,“C: \ LEADTOOLS21 \资源\ \ MyQR.tif图像”,RasterImageFormat。Tif, 1)结束使用结束使用
c#
QRBarcodeData data = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.QR)作为QRBarcodeData;/ /通过这个示例,我们将使用默认选项/ /计算在300 DPI的条形码大小(以像素为单位)int分辨率= 300;barcodeWriter.CalculateBarcodeDataBounds (LeadRect。空的,分辨率,分辨率、数据);/ /创建一个RasterImage对象的大小LeadRect boundsPixels = data.Bounds。ToRectangle(决议,决议);使用(RasterImage图像=RasterImage (RasterMemoryFlags。传统,boundsPixels。宽度,boundsPixels。高度,1,RasterByteOrder。Rgb、RasterViewPerspective.TopLeft,IntPtr。0,0)){/ /设置分辨率的形象。XResolution =决议;的形象。YResolution =决议;/ /填充白色Leadtools.ImageProcessing.FillCommand (RasterColor.FromKnownColor (RasterKnownColor.White) .Run(图片);/ /写的条码图像barcodeWriter。WriteBarcode(image, data,);气管无名动脉瘘管的/ /保存它使用(RasterCodecs编解码器=RasterCodecs ()){codecs.Save(图片,@“C: \ LEADTOOLS21 \资源\ \ MyQR.tif图像”,RasterImageFormat。Tif, 1);}}

结果:的TIF图像QR条形码

如果需要,你可以调整图片在上面的示例中,如果需要精确的像素大小。例如,有QR条形码是300×300像素,添加下面的代码之前保存图片:

VB
昏暗的cmd作为SizeCommand (300、300、RasterSizeFlags.Bicubic)cmd.Run(图片)
c#
SizeCommand cmd =SizeCommand (300、300、RasterSizeFlags.Bicubic);cmd.Run(图片);
注意:大多数条形码标准规定,填充区域与特定的大小在条形码必须存在。例如,在二维码,等于一个符号大小模块(X)。LEADTOOLS总是添加这个填充在编写或计算条形码的大小。

LEADTOOLS成像、医学和文档
188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2021领先的技术公司。保留所有权利。