public bool EnableDoublePassIfSuccess { get; set; }
true to use double pass when reading QR symbols. Otherwise, false. The default value is false.
Performs the same job as EnableDoublePass except the second pass is mandatory, regardless of whether the required barcode was detected the first time.
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 toint resolution = 300;using (RasterImage image = RasterImage.Create((int)(8.5 * resolution), (int)(11.0 * resolution), 1, resolution, RasterColor.FromKnownColor(RasterKnownColor.White))){// Write two QR barcodesWriteBarcode(engine.Writer, image, QRBarcodeSymbolModel.Model1AutoSize, "QR Data 1", false);WriteBarcode(engine.Writer, image, QRBarcodeSymbolModel.Model2Version30, "QR Data 2", true);// Save the imageusing (RasterCodecs codecs = new RasterCodecs()){codecs.Save(image, imageFileName, RasterImageFormat.CcittGroup4, 1);}}// Now read the barcodes againusing (RasterCodecs codecs = new RasterCodecs()){using (RasterImage image = codecs.Load(imageFileName)){// Read all the QR barcodesReadBarcodes(engine.Reader, image);}}}private void WriteBarcode(BarcodeWriter writer, RasterImage image, QRBarcodeSymbolModel symbolModel, string value, bool topLeft){// Create the barcode dataQRBarcodeData 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 imagebarcode.Bounds = new LeadRect(0, 0, image.ImageWidth, image.ImageHeight);// Set the write optionsQRBarcodeWriteOptions 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 itConsole.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 optionsQRBarcodeReadOptions 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:\LEADTOOLS22\Resources\Images";}