public int Granularity { get; set; }
@property (nonatomic, assign) NSInteger granularity;
public int getGranularity()
public void setGranularity(int value)
Granularity # get and set (PatchCodeBarcodeReadOptions)
An Int32 that indicate 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 PatchCodeBarcode_Example()
{
string imageFileName = Path.Combine(LEAD_VARS.ImagesDir, "MyPatchCodeBarcode.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 two PatchCode barcodes
WriteBarcode(engine.Writer, image, "1100");
// 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 PatchCode barcode
ReadBarcode(engine.Reader, image);
}
}
}
private void WriteBarcode(BarcodeWriter writer, RasterImage image, string value)
{
// Create the barcode data
BarcodeData barcode = new BarcodeData(BarcodeSymbology.PatchCode, value);
// Set the write options
PatchCodeBarcodeWriteOptions options = new PatchCodeBarcodeWriteOptions();
// Use X Module when writing the barcode
options.UseXModule = true;
options.XModule = 30;
// Usually PatchCodes are centered in the middle of the page and take the whole height
// Calculate its size
writer.CalculateBarcodeDataBounds(new LeadRect(0, 0, image.ImageWidth, image.ImageHeight), image.XResolution, image.YResolution, barcode, options);
// Position it
LeadRect pixels = barcode.Bounds;
pixels.X = (image.ImageWidth - pixels.Width) / 2;
pixels.Y = 0;
pixels.Height = image.ImageHeight;
barcode.Bounds = new LeadRect();
// Write it
Console.WriteLine("Writing barcode with Data: {0}", value);
writer.WriteBarcode(image, barcode, options);
}
private void ReadBarcode(BarcodeReader reader, RasterImage image)
{
// Setup read options
PatchCodeBarcodeReadOptions options = new PatchCodeBarcodeReadOptions();
options.SearchDirection = BarcodeSearchDirection.Horizontal;
options.Granularity = 9;
Console.WriteLine("Reading PatchCode barcode");
BarcodeData barcode = reader.ReadBarcode(image, LeadRect.Empty, BarcodeSymbology.PatchCode, 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";
}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document