BarcodeReadOptions Class
Summary
Base class for all the barcode read options.
Syntax
C#
VB
Objective-C
C++
Java
[SerializableAttribute()]
public abstract class BarcodeReadOptions : BarcodeOptions
<TypeConverterAttribute()>
<SerializableAttribute()>
Public MustInherit Class BarcodeReadOptions
Inherits BarcodeOptions
Implements System.ICloneable
@interface LTBarcodeReadOptions : LTBarcodeOptions
public abstract class BarcodeReadOptions extends BarcodeOptions
[TypeConverterAttribute()]
[SerializableAttribute()]
public ref class BarcodeReadOptions abstract : public BarcodeOptions, System.ICloneable
Example
This example sets the default barcode search options of all supported symbologies to be "Horizontal and Vertical" and then reads the barcodes from a rotated image.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Barcode;
using Leadtools.ImageProcessing;
public void BarcodeReadOptions_Example()
{
string imageFileName = Path.Combine(LEAD_VARS.ImagesDir, "Barcode1.tif");
// Create a Barcode engine
BarcodeEngine engine = new BarcodeEngine();
// Get the Barcode reader instance
BarcodeReader reader = engine.Reader;
// Load the image
using (RasterCodecs codecs = new RasterCodecs())
{
using (RasterImage image = codecs.Load(imageFileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1))
{
// Rotate the image by 90, so default option of reading horizontal barcodes will not work
Console.WriteLine("Rotating the image by 90 degrees");
RotateCommand rotate = new RotateCommand(90 * 100, RotateCommandFlags.Resize, RasterColor.FromKnownColor(RasterKnownColor.White));
rotate.Run(image);
// Read all the barcodes from the image using default options
Console.WriteLine("Reading barcodes using default options");
BarcodeData[] barcodes = reader.ReadBarcodes(image, LeadRect.Empty, 0, null, null);
// Show the number of barcodes found, should be 0 since default search direction is horizontal
Console.WriteLine("Found {0} barcodes", barcodes.Length);
// Now create options to read barcodes horizontally and vertically
BarcodeReadOptions[] options = GetHorizontalAndVerticalReadBarcodeOptions(reader);
// Read again
Console.WriteLine("Reading barcodes using new options");
barcodes = reader.ReadBarcodes(image, LeadRect.Empty, 0, null, options);
// Show the number of barcodes found, should all be read now
Console.WriteLine("Found {0} barcodes", barcodes.Length);
}
}
}
private static BarcodeReadOptions[] GetHorizontalAndVerticalReadBarcodeOptions(BarcodeReader reader)
{
// By default, the options read horizontal barcodes only, create an array of options capable of reading vertical barcodes
// Notice, we cloned the default options in reader so we will not change the original options
OneDBarcodeReadOptions oneDReadOptions = reader.GetDefaultOptions(BarcodeSymbology.UPCA).Clone() as OneDBarcodeReadOptions;
oneDReadOptions.SearchDirection = BarcodeSearchDirection.HorizontalAndVertical;
FourStateBarcodeReadOptions fourStateReadOptions = reader.GetDefaultOptions(BarcodeSymbology.USPS4State).Clone() as FourStateBarcodeReadOptions;
fourStateReadOptions.SearchDirection = BarcodeSearchDirection.HorizontalAndVertical;
PostNetPlanetBarcodeReadOptions postNetPlanetReadOptions = reader.GetDefaultOptions(BarcodeSymbology.PostNet).Clone() as PostNetPlanetBarcodeReadOptions;
postNetPlanetReadOptions.SearchDirection = BarcodeSearchDirection.HorizontalAndVertical;
GS1DatabarStackedBarcodeReadOptions gs1StackedReadOptions = reader.GetDefaultOptions(BarcodeSymbology.GS1DatabarStacked).Clone() as GS1DatabarStackedBarcodeReadOptions;
gs1StackedReadOptions.SearchDirection = BarcodeSearchDirection.HorizontalAndVertical;
PatchCodeBarcodeReadOptions patchCodeReadOptions = reader.GetDefaultOptions(BarcodeSymbology.PatchCode).Clone() as PatchCodeBarcodeReadOptions;
patchCodeReadOptions.SearchDirection = BarcodeSearchDirection.HorizontalAndVertical;
PDF417BarcodeReadOptions pdf417ReadOptions = reader.GetDefaultOptions(BarcodeSymbology.PDF417).Clone() as PDF417BarcodeReadOptions;
pdf417ReadOptions.SearchDirection = BarcodeSearchDirection.HorizontalAndVertical;
MicroPDF417BarcodeReadOptions microPdf417ReadOptions = reader.GetDefaultOptions(BarcodeSymbology.MicroPDF417).Clone() as MicroPDF417BarcodeReadOptions;
microPdf417ReadOptions.SearchDirection = BarcodeSearchDirection.HorizontalAndVertical;
// Even though this array will not contain all options, it should be enough to read all barcodes, since the version of ReadBarcodes we will use
// will use the default options if an override is not passed
BarcodeReadOptions[] readOptions =
{
oneDReadOptions, fourStateReadOptions, postNetPlanetReadOptions, gs1StackedReadOptions, patchCodeReadOptions, pdf417ReadOptions, microPdf417ReadOptions
};
return readOptions;
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS21\Resources\Images";
}
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.Barcode
Imports Leadtools.ImageProcessing
Public Sub BarcodeReadOptions_Example()
Dim imageFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Barcode1.tif")
' Create a Barcode engine
Dim engine As New BarcodeEngine()
' Get the Barcode reader instance
Dim reader As BarcodeReader = engine.Reader
' Load the image
Using codecs As New RasterCodecs()
Using image As RasterImage = codecs.Load(imageFileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1)
' Rotate the image by 90, so default option of reading horizonal barcodes will not work
Console.WriteLine("Rotating the image by 90 degrees")
Dim rotate As New RotateCommand(90 * 100, RotateCommandFlags.Resize, RasterColor.FromKnownColor(RasterKnownColor.White))
rotate.Run(image)
' Read all the barcodes from the image using default options
Console.WriteLine("Reading barcodes using default options")
Dim barcodes() As BarcodeData = reader.ReadBarcodes(image, LeadRect.Empty, 0, Nothing, Nothing)
' Show the number of barcodes found, should be 0 since default search direction is horizontal
Console.WriteLine("Found {0} barcodes", barcodes.Length)
' Now create options to read barcodes horizontally and vertically
Dim options() As BarcodeReadOptions = GetHorizontalAndVerticalReadBarcodeOptions(reader)
' Read again
Console.WriteLine("Reading barcodes using new options")
barcodes = reader.ReadBarcodes(image, LeadRect.Empty, 0, Nothing, options)
' Show the number of barcodes found, should all be read now
Console.WriteLine("Found {0} barcodes", barcodes.Length)
End Using
End Using
End Sub
Private Shared Function GetHorizontalAndVerticalReadBarcodeOptions(ByVal reader As BarcodeReader) As BarcodeReadOptions()
' By default, the options read horizontal barcodes only, create an array of options capable of reading vertical barcodes
' Notice, we cloned the default options in reader so we will not change the original options
Dim oneDReadOptions As OneDBarcodeReadOptions = DirectCast(reader.GetDefaultOptions(BarcodeSymbology.UPCA).Clone(), OneDBarcodeReadOptions)
oneDReadOptions.SearchDirection = BarcodeSearchDirection.HorizontalAndVertical
Dim fourStateReadOptions As FourStateBarcodeReadOptions = DirectCast(reader.GetDefaultOptions(BarcodeSymbology.USPS4State).Clone(), FourStateBarcodeReadOptions)
fourStateReadOptions.SearchDirection = BarcodeSearchDirection.HorizontalAndVertical
Dim postNetPlanetReadOptions As PostNetPlanetBarcodeReadOptions = DirectCast(reader.GetDefaultOptions(BarcodeSymbology.PostNet).Clone(), PostNetPlanetBarcodeReadOptions)
postNetPlanetReadOptions.SearchDirection = BarcodeSearchDirection.HorizontalAndVertical
Dim gs1StackedReadOptions As GS1DatabarStackedBarcodeReadOptions = DirectCast(reader.GetDefaultOptions(BarcodeSymbology.GS1DatabarStacked).Clone(), GS1DatabarStackedBarcodeReadOptions)
gs1StackedReadOptions.SearchDirection = BarcodeSearchDirection.HorizontalAndVertical
Dim patchCodeReadOptions As PatchCodeBarcodeReadOptions = DirectCast(reader.GetDefaultOptions(BarcodeSymbology.PatchCode).Clone(), PatchCodeBarcodeReadOptions)
patchCodeReadOptions.SearchDirection = BarcodeSearchDirection.HorizontalAndVertical
Dim pdf417ReadOptions As PDF417BarcodeReadOptions = DirectCast(reader.GetDefaultOptions(BarcodeSymbology.PDF417).Clone(), PDF417BarcodeReadOptions)
pdf417ReadOptions.SearchDirection = BarcodeSearchDirection.HorizontalAndVertical
Dim microPdf417ReadOptions As MicroPDF417BarcodeReadOptions = DirectCast(reader.GetDefaultOptions(BarcodeSymbology.MicroPDF417).Clone(), MicroPDF417BarcodeReadOptions)
microPdf417ReadOptions.SearchDirection = BarcodeSearchDirection.HorizontalAndVertical
' Even though this array will not contain all options, it should be enough to read all barcodes, since the version of ReadBarcodes we will use
' will use the default options if an overriden is not passed
Dim readOptions() As BarcodeReadOptions =
{
oneDReadOptions, fourStateReadOptions, postNetPlanetReadOptions, gs1StackedReadOptions, patchCodeReadOptions, pdf417ReadOptions, microPdf417ReadOptions
}
Return readOptions
End Function
Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\LEADTOOLS21\Resources\Images"
End Class