←Select platform

Granularity Property

Summary
Gets or sets a value that indicates the number of scanned lines per column to skip when reading a barcode.
Syntax
C#
Objective-C
C++/CLI
Java
Python
public int Granularity { get; set; } 
@property (nonatomic, assign) NSInteger granularity; 
public int getGranularity() 
public void setGranularity(int value) 
public: 
property int Granularity { 
   int get(); 
   void set (    int ); 
} 
Granularity # get and set (PatchCodeBarcodeReadOptions) 

Property Value

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.

Remarks

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.

Example
C#
Java
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:\LEADTOOLS23\Resources\Images"; 
} 
 
import static org.junit.Assert.assertTrue; 
 
import java.io.File; 
import java.io.IOException; 
 
import org.junit.*; 
import org.junit.Test; 
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 
 
import leadtools.*; 
import leadtools.barcode.*; 
import leadtools.codecs.*; 
 
 
public void patchCodeBarcodeExample() { 
   final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images"; 
   String imageFileName = combine(LEAD_VARS_IMAGES_DIR, "PatchCodeBarcode.tif"); 
   RasterCodecs codecs = new RasterCodecs(); 
   BarcodeEngine engine = new BarcodeEngine(); 
 
   // Create the image to write the barcodes to 
   int resolution = 300; 
   RasterImage image = RasterImage.create((int) (8.5 * resolution), (int) (11.0 * resolution), 1, resolution, 
         RasterColor.fromKnownColor(RasterKnownColor.WHITE)); 
 
   // Write two PatchCode barcodes 
   writeBarcode(engine.getWriter(), image, "1100"); 
 
   // Save the image 
   codecs.save(image, imageFileName, RasterImageFormat.CCITT_GROUP4, 1); 
 
   // Now read the barcodes again 
   image = codecs.load(imageFileName); 
 
   // Read the PatchCode barcode 
   readBarcode(engine.getReader(), image); 
 
   // Clean up 
   codecs.dispose(); 
   image.dispose(); 
 
   assertTrue("File unsuccessfully saved to " + imageFileName, new File(imageFileName).exists()); 
   System.out.printf("File successfully saved to %s%n", imageFileName); 
} 
 
// Create the barcode data 
private void writeBarcode(BarcodeWriter writer, RasterImage image, String value) { 
   BarcodeData barcode = new BarcodeData(BarcodeSymbology.PATCH_CODE, value); 
 
   // Set the write options 
   PatchCodeBarcodeWriteOptions options = new PatchCodeBarcodeWriteOptions(); 
   // Use X Module when writing the barcode 
   options.setUseXModule(true); 
   options.setXModule(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.getImageWidth(), image.getImageHeight()), 
         image.getXResolution(), image.getYResolution(), barcode, options); 
 
   // Position it 
   LeadRect pixels = barcode.getBounds(); 
   pixels.setX(image.getImageWidth() - pixels.getWidth() / 2); 
   pixels.setY(0); 
   pixels.setHeight(image.getImageHeight()); 
   barcode.setBounds(new LeadRect()); 
 
   // Write it 
   System.out.printf("Writing barcode with Data: %s%n", value); 
   writer.writeBarcode(image, barcode, options); 
} 
 
// Setup read options 
private void readBarcode(BarcodeReader reader, RasterImage image) { 
   PatchCodeBarcodeReadOptions options = new PatchCodeBarcodeReadOptions(); 
   options.setSearchDirection(BarcodeSearchDirection.HORIZONTAL); 
   options.setGranularity(9); 
 
   System.out.println("Reading PatchCode barcode"); 
   BarcodeData barcode = reader.readBarcode(image, LeadRect.getEmpty(), BarcodeSymbology.PATCH_CODE, options); 
   if (barcode != null) { 
      System.out.printf(" At %1s, data: %2s%n", barcode.getBounds(), barcode.getValue()); 
   } else { 
      System.out.println(" Not found"); 
   } 
} 
 
public static String combine(String path1, String path2) { 
   File file = new File(path1, path2); 
   return file.getPath(); 
} 
Requirements

Target Platforms

Help Version 23.0.2024.2.29
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Barcode Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.