Hi there,
I am using Infragistics BarcodeReader to process some documents. But the BarcodeReader behaves quite strange.
While it is scanning the same file, sometimes it give a barcode. Sometimes it doesn't.And sometimes it just throws exceptions ('System.OutOfMemoryException', System.Runtime.InteropServices.COMException).
What I basically do is to convert some PDF's to PNG and let the Infragistics BarcodeReader decode the QR code, and I have tested with the following 3 files.
C:\Temp\Test\SConbitScan42990006.001.04-Certificate.pdfC:\Temp\Test\SConbitScan42990006.001.03-Certificate.pdfC:\Temp\Test\SConbitScan42990006.002.02-Certificate.pdf
And their corresponding PNG's
C:\Temp\Test\QrFolder\SConbitScan42990006.001.04-Certificate.pdf.pngC:\Temp\Test\QrFolder\SConbitScan42990006.001.03-Certificate.pdf.pngC:\Temp\Test\QrFolder\SConbitScan42990006.002.02-Certificate.pdf.png
All files are included in the sample.
Main parts of the code:
private static void ReadQrCode(string fileName) { var barcodeReader = new BarcodeReader(); barcodeReader.DecodeComplete += BarcodeReader_DecodeComplete; var image = new BitmapImage(new Uri(fileName, UriKind.Relative)); //Decoding an image. try { Console.WriteLine($"File name: {fileName}"); barcodeReader.Decode(image); } catch (Exception e) { ... } finally { image = null; barcodeReader = null; GC.Collect(); } } private static void BarcodeReader_DecodeComplete(object sender, ReaderDecodeArgs e) { var text = e.SymbolFound ? e.Value : "No QR code found"; Console.WriteLine($"QR CODE: { text}\n ======== "); }
And the outputs in CONSOLE:
Exception of type 'System.OutOfMemoryException' was thrown. System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown. at Infragistics.Controls.Barcodes.ImageProcessing.ConvertGrayScaleToRgb(Array pixels, Boolean hasAlpha) at Infragistics.Controls.Barcodes.ImageProcessing.CreateImageFromPixelsArray(Byte[][] data, ImageData imageData, Boolean isImageZoomed) at Infragistics.Controls.Barcodes.BarcodeReader.Decode(BitmapSource bitmap, Symbology symbologyTypes) at Infragistics.Controls.Barcodes.BarcodeReader.Decode(BitmapSource bitmap) at InfraBarcodeScannerConsole.Program.ReadQrCode(String fileName) in C:\Users\nawed\Desktop\WorkSpaceVS\TestApplication\InfraBarcodeScannerConsole\Program.cs:line 110
Insufficient memory to continue the execution of the program. System.OutOfMemoryException: Insufficient memory to continue the execution of the program. at System.Windows.Media.Imaging.WriteableBitmap..ctor(Int32 pixelWidth, Int32 pixelHeight, Double dpiX, Double dpiY, PixelFormat pixelFormat, BitmapPalette palette) at Infragistics.Controls.Barcodes.ImageProcessing.CreateImageFromPixelsArray(Byte[][] data, ImageData imageData, Boolean isImageZoomed) at Infragistics.Controls.Barcodes.BarcodeReader.Decode(BitmapSource bitmap, Symbology symbologyTypes) at Infragistics.Controls.Barcodes.BarcodeReader.Decode(BitmapSource bitmap) at InfraBarcodeScannerConsole.Program.ReadQrCode(String fileName) in C:\Users\nawed\Desktop\WorkSpaceVS\TestApplication\InfraBarcodeScannerConsole\Program.cs:line 110
MILERR_WIN32ERROR (Exception from HRESULT: 0x88980003) System.Runtime.InteropServices.COMException (0x88980003): MILERR_WIN32ERROR (Exception from HRESULT: 0x88980003) at System.Windows.Media.Imaging.WriteableBitmap..ctor(Int32 pixelWidth, Int32 pixelHeight, Double dpiX, Double dpiY, PixelFormat pixelFormat, BitmapPalette palette) at Infragistics.Controls.Barcodes.ImageProcessing.CreateImageFromPixelsArray(Byte[][] data, ImageData imageData, Boolean isImageZoomed) at Infragistics.Controls.Barcodes.BarcodeReader.Decode(BitmapSource bitmap, Symbology symbologyTypes) at Infragistics.Controls.Barcodes.BarcodeReader.Decode(BitmapSource bitmap) at DCMConsoleApplication.Program.ReadQrCode(String fileName) in C:\Users\nawed\Desktop\WorkSpaceVS\TestApplication\InfraBarcodeScannerConsole\Program.cs:line 110
File name: C:\Temp\Test\QrFolder\SConbitScan42990006.001.04-Certificate.pdf.png QR CODE: 33KC42990006.001.04 ======== File name: C:\Temp\Test\QrFolder\SConbitScan42990006.001.04-Certificate.pdf.png QR CODE: 33KC42990006.001.04 ======== File name: C:\Temp\Test\QrFolder\SConbitScan42990006.001.04-Certificate.pdf.png QR CODE: No QR code found ======== File name: C:\Temp\Test\QrFolder\SConbitScan42990006.001.04-Certificate.pdf.png QR CODE: 33KC42990006.001.04
========
File name: C:\Temp\Test\QrFolder\SConbitScan42990006.001.03-Certificate.pdf.pngQR CODE: No QR code found ======== File name: C:\Temp\Test\QrFolder\SConbitScan42990006.001.03-Certificate.pdf.png QR CODE: 33KC63490101.014.01 ======== File name: C:\Temp\Test\QrFolder\SConbitScan42990006.001.03-Certificate.pdf.png QR CODE: 33KC63490101.014.01 ======== File name: C:\Temp\Test\QrFolder\SConbitScan42990006.001.03-Certificate.pdf.png QR CODE: 33KC63490101.014.01
File name: C:\Temp\Test\QrFolder\SConbitScan42990006.002.02-Certificate.pdf.pngQR CODE: No QR code found ======== File name: C:\Temp\Test\QrFolder\SConbitScan42990006.002.02-Certificate.pdf.png QR CODE: 33KC63490101.014.01 ======== File name: C:\Temp\Test\QrFolder\SConbitScan42990006.002.02-Certificate.pdf.png QR CODE: No QR code found ======== File name: C:\Temp\Test\QrFolder\SConbitScan42990006.002.02-Certificate.pdf.png QR CODE: 33KC63490101.014.01
File name: C:\Temp\Test\QrFolder\SConbitScan42990006.001.03-Certificate.pdf.pngQR CODE: No QR code found
File name: C:\Temp\Test\QrFolder\SConbitScan42990006.001.04-Certificate.pdf.pngQR CODE: 33KC42990006.001.04
THE PNG FILES WERE TOO BIG FOR UPLOAD I GUESS.