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);
// Check digit mode types
BarcodeReturnCheckDigit[] digits = (BarcodeReturnCheckDigit[])Enum.GetValues(typeof(BarcodeReturnCheckDigit));
foreach(var digit in digits)
{
Console.WriteLine($"Check digit modes: {digit}");
}
// 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;
PharmaCodeBarcodeReadOptions pharmaCodeBarcodeReadOptions = reader.GetDefaultOptions(BarcodeSymbology.PharmaCode).Clone()as PharmaCodeBarcodeReadOptions;
pharmaCodeBarcodeReadOptions.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, pharmaCodeBarcodeReadOptions
};
return readOptions;
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
}
import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioFileFormat.Type;
import org.junit.*;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
import static org.junit.Assert.*;
import leadtools.*;
import leadtools.barcode.*;
import leadtools.codecs.*;
import leadtools.imageprocessing.*;
public void barcodeReadOptionsExample() {
final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS22\\Resources\\Images";
String imageFileName = combine(LEAD_VARS_IMAGES_DIR, "Barcode1.tif");
// Create a Barcode engine
BarcodeEngine engine = new BarcodeEngine();
// Get the Barcode reader instance
BarcodeReader reader = engine.getReader();
// Load the image
RasterCodecs codecs = new RasterCodecs();
RasterImage image = codecs.load(imageFileName, 0, CodecsLoadByteOrder.BGR_OR_GRAY, 1, 1);
// Rotate the image by 90, so default option of reading horizontal barcodes will
// not work
System.out.println("Rotating the image by 90 degrees");
RotateCommand rotate = new RotateCommand(90 * 100, RotateCommandFlags.RESIZE.getValue(),
RasterColor.fromKnownColor(RasterKnownColor.WHITE));
rotate.run(image);
// Read all the barcodes from the image using default options
System.out.println("Reading barcodes using default options");
BarcodeData[] barcodes = reader.readBarcodes(image, LeadRect.getEmpty(), 0, null, null);
// Show the number of barcodes found, should be 0 since default search direction
// is horizontal
System.out.println(String.format("Found %s barcodes", barcodes.length));
// Now create options to read barcodes horizontally and vertically
BarcodeReadOptions[] options = GetHorizontalAndVerticalReadBarcodeOptions(reader);
// Check digit mode types
BarcodeReturnCheckDigit[] digits = BarcodeReturnCheckDigit.values();
for (var digit : digits) {
System.out.println(String.format("Check digit modes: %s", digit));
}
// Read again
System.out.println("Reading barcodes using new options");
barcodes = reader.readBarcodes(image, LeadRect.getEmpty(), 0, null, options);
// Show the number of barcodes found, should all be read now
System.out.println(String.format("Found %s barcodes", barcodes.length));
codecs.dispose();
image.dispose();
}
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 = (OneDBarcodeReadOptions) reader.getDefaultOptions(BarcodeSymbology.UPC_A)
.clone(); // fix as part, go back to other times u had it
oneDReadOptions.setSearchDirection(BarcodeSearchDirection.HORIZONTAL_AND_VERTICAL);
FourStateBarcodeReadOptions fourStateReadOptions = (FourStateBarcodeReadOptions) reader
.getDefaultOptions(BarcodeSymbology.USPS_4STATE).clone();
fourStateReadOptions.setSearchDirection(BarcodeSearchDirection.HORIZONTAL_AND_VERTICAL);
PostNetPlanetBarcodeReadOptions postNetPlanetReadOptions = (PostNetPlanetBarcodeReadOptions) reader
.getDefaultOptions(BarcodeSymbology.POST_NET).clone();
postNetPlanetReadOptions.setSearchDirection(BarcodeSearchDirection.HORIZONTAL_AND_VERTICAL);
GS1DatabarStackedBarcodeReadOptions gs1StackedReadOptions = (GS1DatabarStackedBarcodeReadOptions) reader
.getDefaultOptions(BarcodeSymbology.GS1_DATA_BAR_STACKED).clone();
gs1StackedReadOptions.setSearchDirection(BarcodeSearchDirection.HORIZONTAL_AND_VERTICAL);
PatchCodeBarcodeReadOptions patchCodeReadOptions = (PatchCodeBarcodeReadOptions) reader
.getDefaultOptions(BarcodeSymbology.PATCH_CODE).clone();
patchCodeReadOptions.setSearchDirection(BarcodeSearchDirection.HORIZONTAL_AND_VERTICAL);
PDF417BarcodeReadOptions pdf417ReadOptions = (PDF417BarcodeReadOptions) reader
.getDefaultOptions(BarcodeSymbology.PDF417).clone();
pdf417ReadOptions.setSearchDirection(BarcodeSearchDirection.HORIZONTAL_AND_VERTICAL);
MicroPDF417BarcodeReadOptions microPdf417ReadOptions = (MicroPDF417BarcodeReadOptions) reader
.getDefaultOptions(BarcodeSymbology.MICRO_PDF417).clone();
microPdf417ReadOptions.setSearchDirection(BarcodeSearchDirection.HORIZONTAL_AND_VERTICAL);
PharmaCodeBarcodeReadOptions pharmaCodeBarcodeReadOptions = (PharmaCodeBarcodeReadOptions) reader
.getDefaultOptions(BarcodeSymbology.PHARMA_CODE).clone();
pharmaCodeBarcodeReadOptions.setSearchDirection(BarcodeSearchDirection.HORIZONTAL_AND_VERTICAL);
// 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
// the default options if an override is not passed
BarcodeReadOptions[] readOptions = {
oneDReadOptions, fourStateReadOptions, postNetPlanetReadOptions, gs1StackedReadOptions,
patchCodeReadOptions, pdf417ReadOptions, microPdf417ReadOptions, pharmaCodeBarcodeReadOptions
};
return readOptions;
}