[SerializableAttribute()]
public enum QRBarcodeECCLevel
typedef NS_ENUM(NSInteger, LTQRBarcodeECCLevel) {
LTQRBarcodeECCLevelLevelL,
LTQRBarcodeECCLevelLevelM,
LTQRBarcodeECCLevelLevelQ,
LTQRBarcodeECCLevelLevelH
};
public enum QRBarcodeECCLevel
[SerializableAttribute()]
public enum class QRBarcodeECCLevel
class QRBarcodeECCLevel(Enum):
LevelL = 0
LevelM = 1
LevelQ = 2
LevelH = 3
Value | Member | Description |
---|---|---|
0 | LevelL |
QR Level L - Lowest reliability |
1 | LevelM |
QR Level M - Standard reliability |
2 | LevelQ |
QR Level Q - High reliability |
3 | LevelH |
QR Level H - Maximum reliability |
Used as the type for the QRBarcodeWriteOptions.ECCLevel property to specify the QR barcode ECC (Error Correction) level.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Barcode;
using Leadtools.ImageProcessing;
public void QRBarcode_Example()
{
string imageFileName = Path.Combine(LEAD_VARS.ImagesDir, "MyQRBarcodes.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 QR barcodes
WriteBarcode(engine.Writer, image, QRBarcodeSymbolModel.Model1AutoSize, "QR Data 1", false);
WriteBarcode(engine.Writer, image, QRBarcodeSymbolModel.Model2Version30, "QR Data 2", 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 all the QR barcodes
ReadBarcodes(engine.Reader, image);
}
}
}
private void WriteBarcode(BarcodeWriter writer, RasterImage image, QRBarcodeSymbolModel symbolModel, string value, bool topLeft)
{
// Create the barcode data
QRBarcodeData barcode = BarcodeData.CreateDefaultBarcodeData(BarcodeSymbology.QR) as QRBarcodeData;
barcode.SymbolModel = symbolModel;
barcode.Value = value;
barcode.Symbology = BarcodeSymbology.QR;
// 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
QRBarcodeWriteOptions options = new QRBarcodeWriteOptions();
if (topLeft)
{
options.HorizontalAlignment = BarcodeAlignment.Near;
options.VerticalAlignment = BarcodeAlignment.Near;
}
else
{
options.HorizontalAlignment = BarcodeAlignment.Far;
options.VerticalAlignment = BarcodeAlignment.Far;
}
options.GroupNumber = 0;
options.GroupTotal = 0;
options.XModule = 30;
options.ECCLevel = QRBarcodeECCLevel.LevelL;
// Write it
Console.WriteLine("Writing barcode with symbol model: {0} and Data: {1}", symbolModel, value);
writer.WriteBarcode(image, barcode, options);
}
private void ReadBarcodes(BarcodeReader reader, RasterImage image)
{
// Setup read options
QRBarcodeReadOptions options = new QRBarcodeReadOptions();
options.EnableDoublePass = false;
options.EnableDoublePassIfSuccess = true;
options.EnablePreprocessing = true;
Console.WriteLine("Reading QR barcodes");
BarcodeData[] barcodes = reader.ReadBarcodes(image, LeadRect.Empty, 0, new BarcodeSymbology[] { BarcodeSymbology.QR }, new BarcodeReadOptions[] { options });
Console.WriteLine("{0} barcodes found:", barcodes.Length);
foreach (QRBarcodeData barcode in barcodes)
{
string value = BarcodeData.ParseECIData(barcode.GetData());
if (string.IsNullOrEmpty(value))
value = barcode.Value;
Console.WriteLine(" At {0}, symbol model: {1} data: {2} and symbology: {3}", barcode.Bounds, barcode.SymbolModel, 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 qrBarcodeExample() {
final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images";
String imageFileName = combine(LEAD_VARS_IMAGES_DIR, "QRBarcodes.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 QR barcodes
writeBarcode(engine.getWriter(), image, QRBarcodeSymbolModel.MODEL1_AUTOSIZE, "QR Data 1", false);
writeBarcode(engine.getWriter(), image, QRBarcodeSymbolModel.MODEL2_VERSION30, "QR Data 2", true);
// Save the image
codecs.save(image, imageFileName, RasterImageFormat.CCITT_GROUP4, 1);
// Now read the barcodes again
image = codecs.load(imageFileName);
// Read all the QR barcodes
readBarcodes(engine.getReader(), image);
// Clean up
image.dispose();
codecs.dispose();
assertTrue("file unsuccessfully saved to " + imageFileName, (new File(imageFileName)).exists());
System.out.printf("File saved successfully to %s%n", imageFileName);
}
// Create the barcode data
private void writeBarcode(BarcodeWriter writer, RasterImage image, QRBarcodeSymbolModel symbolModel, String value, boolean topLeft) {
QRBarcodeData barcode = (QRBarcodeData) BarcodeData.createDefaultBarcodeData(BarcodeSymbology.QR);
barcode.setSymbolModel(symbolModel);
barcode.setValue(value);
barcode.setSymbology(BarcodeSymbology.QR);
// 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
QRBarcodeWriteOptions options = new QRBarcodeWriteOptions();
if (topLeft) {
options.setHorizontalAlignment(BarcodeAlignment.NEAR);
options.setVerticalAlignment(BarcodeAlignment.NEAR);
} else {
options.setHorizontalAlignment(BarcodeAlignment.FAR);
options.setVerticalAlignment(BarcodeAlignment.FAR);
}
options.setGroupNumber(0);
options.setGroupTotal(0);
options.setXModule(30);
options.setECCLevel(QRBarcodeECCLevel.LEVEL_L);
// Write it
System.out.printf("Writing barcode with symbol model: %1s and Data: %2s %n", symbolModel, value);
writer.writeBarcode(image, barcode, options);
}
// Setup read options
private void readBarcodes(BarcodeReader reader, RasterImage image) {
QRBarcodeReadOptions options = new QRBarcodeReadOptions();
options.setEnableDoublePass(false);
options.setEnableDoublePassIfSuccess(true);
options.setEnablePreprocessing(true);
System.out.println("Reading QR barcodes");
BarcodeData[] barcodes = reader.readBarcodes(image, LeadRect.getEmpty(), 0,
new BarcodeSymbology[] { BarcodeSymbology.QR }, new BarcodeReadOptions[] { options });
System.out.printf("%s barcodes found: %n", barcodes.length);
for (BarcodeData barcode : barcodes) {
String value = BarcodeData.parseECIData(barcode.getData());
if (value == null)
value = barcode.getValue();
System.out.printf(" At %1s, symbol model: %2s data: %3s and symbology: %4s %n", barcode.getBounds(),
barcode.getData(), value, 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