public bool GS1toHRI { get; set; }
@property (nonatomic, assign) BOOL GS1toHRI;
GS1toHRI # get and set (DatamatrixBarcodeReadOptions)
true to format the resulting string in human readable interpretation (HRI), add parenthesis around AIs, after reading a GS1 formatted string. Otherwise, false. The default value is false.
If the resulting string is needed in GS1 format then there is no need to enable this option.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Barcode;
using Leadtools.ImageProcessing;
public void DatamatrixBarcode_Example()
{
string imageFileName = Path.Combine(LEAD_VARS.ImagesDir, "MyDatamatrixBarcodes.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 Datamatrix barcodes, a square and a rectangle one
WriteBarcode(engine.Writer, image, DatamatrixBarcodeSymbolSize.Size16X36, "Datamatrix1 16x36", false);
WriteBarcode(engine.Writer, image, DatamatrixBarcodeSymbolSize.Size132X132, "Datamatrix2 132x132", true);
// 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 only square symbols, should only read the first barcode
ReadBarcodes(engine.Reader, image, true);
// Read all symbols, should read both barcodes
ReadBarcodes(engine.Reader, image, false);
}
}
}
private void WriteBarcode(BarcodeWriter writer, RasterImage image, DatamatrixBarcodeSymbolSize symbolSize, string value, bool topLeft)
{
// Create the barcode data
DatamatrixBarcodeData barcode = BarcodeData.CreateDefaultBarcodeData(BarcodeSymbology.Datamatrix) as DatamatrixBarcodeData;
barcode.SymbolSize = symbolSize;
barcode.Value = value;
barcode.Symbology= BarcodeSymbology.Datamatrix;
// We will use the alignment to position the barcodes, so use all of the image
barcode.Bounds = new LeadRect(0, 0, image.ImageWidth, image.ImageHeight);
// Set the write options
DatamatrixBarcodeWriteOptions options = new DatamatrixBarcodeWriteOptions();
if (topLeft)
{
options.HorizontalAlignment = BarcodeAlignment.Near;
options.VerticalAlignment = BarcodeAlignment.Near;
}
else
{
options.HorizontalAlignment = BarcodeAlignment.Far;
options.VerticalAlignment = BarcodeAlignment.Far;
}
options.DisableCompression = false;
options.GroupNumber = 0;
options.GroupTotal = 0;
options.FileIdNumberLowByte = 1;
options.FileIdNumberHighByte = 1;
options.XModule = 30;
options.HRItoGS1 = false;
// Write it
Console.WriteLine("Writing barcode with symbol size: {0} and Data: {1}", symbolSize, value);
writer.WriteBarcode(image, barcode, options);
}
private void ReadBarcodes(BarcodeReader reader, RasterImage image, bool squareOnly)
{
// Setup read options
DatamatrixBarcodeReadOptions options = new DatamatrixBarcodeReadOptions();
options.ReadSquareSymbolsOnly = squareOnly;
options.EnableDoublePass = false;
options.EnableDoublePassIfSuccess = false;
options.EnableInvertedSymbols = false;
options.EnableFastMode = true;
options.EnableSmallSymbols = true;
options.EnablePreprocessing = true;
options.GS1toHRI = false;
Console.WriteLine("Reading Datamatrix barcodes with ReadSquareSymbolsOnly set to {0}", squareOnly);
BarcodeData[] barcodes = reader.ReadBarcodes(image, LeadRect.Empty, 0, new BarcodeSymbology[] { BarcodeSymbology.Datamatrix }, new BarcodeReadOptions[] { options });
Console.WriteLine("{0} barcodes found:", barcodes.Length);
foreach (DatamatrixBarcodeData barcode in barcodes)
{
Console.WriteLine(" At {0}, symbol size: {1} data: {2} and symbology: {3}", barcode.Bounds, barcode.SymbolSize, barcode.Value, barcode.Symbology);
}
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
}
import java.io.File;
import java.io.IOException;
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.*;
public void datamatrixBarcodeExample() {
final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images";
String imageFileName = combine(LEAD_VARS_IMAGES_DIR, "MyDatamatrixBarcodes.tif");
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 Datamatrix barcodes, a square and a rectangle one
writeBarcode(engine.getWriter(), image, DatamatrixBarcodeSymbolSize.SIZE16X36, "Datamatrix1 16x36", false);
writeBarcode(engine.getWriter(), image, DatamatrixBarcodeSymbolSize.SIZE132X132, "Datamatrix2 132x132", true);
// Save the image
RasterCodecs codecs = new RasterCodecs();
codecs.save(image, imageFileName, RasterImageFormat.CCITT_GROUP4, 1);
// Now read the barcodes again
image = codecs.load(imageFileName);
// Read only square symbols, should only read the first barcode
readBarcodes(engine.getReader(), image, true);
// Read all symbols, should read both barcodes
readBarcodes(engine.getReader(), image, false);
// cleanup
image.dispose();
codecs.dispose();
}
// Create the barcode data
private void writeBarcode(BarcodeWriter writer, RasterImage image, DatamatrixBarcodeSymbolSize symbolSize, String value, boolean topLeft) {
DatamatrixBarcodeData barcode = (DatamatrixBarcodeData) BarcodeData.createDefaultBarcodeData(BarcodeSymbology.DATAMATRIX);
barcode.setSymbolSize(symbolSize);
barcode.setValue(value);
barcode.setSymbology(BarcodeSymbology.DATAMATRIX);
// We will use the alignment to position the barcodes, so use all of the image
barcode.setBounds(new LeadRect(0, 0, image.getImageWidth(), image.getImageHeight()));
// Set the write options
DatamatrixBarcodeWriteOptions options = new DatamatrixBarcodeWriteOptions();
if (topLeft) {
options.setHorizontalAlignment(BarcodeAlignment.NEAR);
options.setVerticalAlignment(BarcodeAlignment.NEAR);
} else {
options.setHorizontalAlignment(BarcodeAlignment.FAR);
options.setVerticalAlignment(BarcodeAlignment.FAR);
}
options.setDisableCompression(false);
options.setGroupNumber(0);
options.setGroupTotal(0);
options.setFileIdNumberLowByte((byte) 1);
options.setFileIdNumberHighByte((byte) 1);
options.setXModule(30);
options.setHRItoGS1(false);
// Write it
System.out.printf("Writing barcode with symbol size: %1s and Data: %2s%n", symbolSize, value);
writer.writeBarcode(image, barcode, options);
}
// Setup read options
private void readBarcodes(BarcodeReader reader, RasterImage image, boolean squareOnly) {
DatamatrixBarcodeReadOptions options = new DatamatrixBarcodeReadOptions();
options.setReadSquareSymbolsOnly(squareOnly);
options.setEnableDoublePass(false);
options.setEnableDoublePassIfSuccess(false);
options.setEnableInvertedSymbols(false);
options.setEnableFastMode(true);
options.setEnableSmallSymbols(true);
options.setEnablePreprocessing(true);
options.setGS1toHRI(false);
System.out.printf("Reading Datamatrix barcodes with ReadSquareSymbolsOnly set to %1s%n", squareOnly);
BarcodeData[] barcodes = reader.readBarcodes(image, LeadRect.getEmpty(), 0,
new BarcodeSymbology[] { BarcodeSymbology.DATAMATRIX }, new BarcodeReadOptions[] { options });
System.out.printf("%s barcodes found:%n", barcodes.length);
for (BarcodeData barcode : barcodes) {
System.out.printf(" At %1s, symbol size: %2s data: %3s and symbology: %4s", barcode.getBounds(),
barcode.getData(), barcode.getValue(), barcode.getSymbology());
}
}
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
Your email has been sent to support! Someone should be in touch! If your matter is urgent please come back into chat.
Chat Hours:
Monday - Friday, 8:30am to 6pm ET
Thank you for your feedback!
Please fill out the form again to start a new chat.
All agents are currently offline.
Chat Hours:
Monday - Friday
8:30AM - 6PM EST
To contact us please fill out this form and we will contact you via email.