public int Granularity { get; set; }
An Int32 that indicates the number of scanned lines per column to skip when reading a barcode. Must be a value greater to or equal to 1. The default value is 9.
A value of 9 means that each tenth line will be scanned when looking for a barcode. Scanning every line will slow the search process while skipping too many lines may skip over the barcode.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Barcode;
using Leadtools.ImageProcessing;
public void OneDBarcode_Example()
{
string imageFileName = Path.Combine(LEAD_VARS.ImagesDir, "MyOneDBarcodes.tif");
BarcodeEngine engine = new BarcodeEngine();
// Create the image to write the barcodes to
int resolution = 300;
using (RasterImage image = RasterImage.Create((int)(8.5 * resolution), (int)(11.0 * resolution), 1, resolution, RasterColor.FromKnownColor(RasterKnownColor.White)))
{
// Write a POSTNET and a PLANET barcodes
WriteBarcode(engine.Writer, image, BarcodeSymbology.UPCA, "01234567890", new LeadRect(10, 100, 400, 200));
WriteBarcode(engine.Writer, image, BarcodeSymbology.Code128, "Code 128", new LeadRect(10, 400, 400, 200));
WriteBarcode(engine.Writer, image, BarcodeSymbology.Code11, "124578", new LeadRect(10, 700, 400, 200));
// Save the image
using (RasterCodecs codecs = new RasterCodecs())
{
codecs.Save(image, imageFileName, RasterImageFormat.CcittGroup4, 1);
}
}
// Now read the barcodes again
using (RasterCodecs codecs = new RasterCodecs())
{
using (RasterImage image = codecs.Load(imageFileName))
{
// Read the UPC-A barcode
ReadBarcodes(engine.Reader, image, BarcodeSymbology.UPCA);
// Read the Code 128 barcode
ReadBarcodes(engine.Reader, image, BarcodeSymbology.Code128);
// Read the Code 11 barcode
ReadBarcodes(engine.Reader, image, BarcodeSymbology.Code11);
}
}
}
private void WriteBarcode(BarcodeWriter writer, RasterImage image, BarcodeSymbology symbology, string value, LeadRect bounds)
{
// Create the barcode data
BarcodeData barcode = new BarcodeData(symbology, value);
barcode.Bounds = bounds;
// Set the write options
OneDBarcodeWriteOptions options = new OneDBarcodeWriteOptions();
options.TextPosition = BarcodeOutputTextPosition.Default;
options.UseXModule = false;
options.XModule = 30;
options.EnableErrorCheck = false;
options.SetGS1DatabarLinkageBit = false;
options.WriteTruncatedGS1Databar = false;
options.Code128TableEncoding = Code128BarcodeTableEncoding.Auto;
options.Code11CheckDigitType = Code11BarcodeCheckDigitType.CDigit;
options.MSIModuloType = MSIBarcodeModuloType.Modulo10;
// Write it
Console.WriteLine("Writing {0} barcode with data: {1}", symbology, value);
writer.WriteBarcode(image, barcode, options);
}
private void ReadBarcodes(BarcodeReader reader, RasterImage image, BarcodeSymbology symbology)
{
// Setup read options
OneDBarcodeReadOptions options = new OneDBarcodeReadOptions();
options.SearchDirection = BarcodeSearchDirection.Horizontal;
options.EnableFastMode = true;
options.Granularity = 9;
options.MinimumStringLength = 3;
options.MaximumStringLength = 0;
options.WhiteLinesNumber = 3;
options.ReturnCheckDigit = BarcodeReturnCheckDigit.Default;
options.EnableErrorCheck = false;
options.AvoidCorruptedBlocks = false;
options.AllowPartialRead = false;
options.Code11CheckDigitType = Code11BarcodeCheckDigitType.CDigit;
options.MSIModuloType = MSIBarcodeModuloType.Modulo10;
options.CalculateBarWidthReduction = true;
options.Code39Extended = false;
options.EnableDoublePass = false;
options.EnablePreprocessing = false;
options.ResizeSmall1D = false;
Console.WriteLine("Reading {0} barcodes", symbology);
BarcodeData barcode = reader.ReadBarcode(image, LeadRect.Empty, symbology, options);
if (barcode != null)
{
Console.WriteLine(" At {0}, data: {1}", barcode.Bounds, barcode.Value);
}
else
{
Console.WriteLine(" Not found");
}
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";
}