Imports Vintasoft.Imaging
Imports Vintasoft.Barcode
Imports Vintasoft.Barcode.BarcodeInfo
Imports Vintasoft.Barcode.QualityTests
''' <summary>
''' Test that shows how to test the print quality of matrix 2D barcodes
''' (Aztec, DataMatrix, Han Xin Code, QR and MicroQR).
''' </summary>
Class ISO15415QualityTestMatrixExample
''' <summary>
''' Runs the test.
''' </summary>
Public Shared Sub Test(filename As String)
' load image with barcode from file
Using barcodeImage As VintasoftBitmap = ImageCodecs.[Default].Decode(filename)
' read barcodes from image and test the print quality of 2D barcodes
ReadBarcodesAndTestBarcodePrintQuality(barcodeImage)
End Using
End Sub
''' <summary>
''' Reads barcodes from image and tests the print quality of 2D barcodes.
''' </summary>
Public Shared Sub ReadBarcodesAndTestBarcodePrintQuality(imageWithBarcodes As VintasoftBitmap)
' create the barcode reader
Using reader As New BarcodeReader()
' specify that reader must collect information for quality test
reader.Settings.CollectTestInformation = True
' specify that reader must search for Aztec, DataMatrix, Han Xin Code, QR and MicroQR barcodes only
reader.Settings.ScanBarcodeTypes = BarcodeType.Aztec Or BarcodeType.DataMatrix Or BarcodeType.QR Or BarcodeType.MicroQR Or BarcodeType.HanXinCode
' read barcodes
Dim barcodeInfos As IBarcodeInfo() = reader.ReadBarcodes(imageWithBarcodes)
' for each found barcode
For i As Integer = 0 To barcodeInfos.Length - 1
' test print quality of barcode using ISO 15415 test
Dim test As New ISO15415QualityTest()
test.CalculateGrades(DirectCast(barcodeInfos(i), BarcodeInfo2D), imageWithBarcodes)
' print results of ISO 15415 test
Console.WriteLine(String.Format("[{0}] {1}", barcodeInfos(i).BarcodeType, barcodeInfos(i).Value))
Console.WriteLine(String.Format("Decode : {0}", test.Decode))
Console.WriteLine(String.Format("Unused error correction : {0} ({1})", test.UnusedErrorCorrection, test.UnusedErrorCorrection.ValueText))
Console.WriteLine(String.Format("Symbol contrast : {0} ({1})", test.SymbolContrast, test.SymbolContrast.ValueText))
Console.WriteLine(String.Format("Axial nonuniformity : {0} ({1})", test.AxialNonuniformity, test.AxialNonuniformity.ValueText))
Console.WriteLine(String.Format("Grid nonuniformity : {0} ({1})", test.GridNonuniformity, test.GridNonuniformity.ValueText))
Console.WriteLine(String.Format("Modulation : {0}", test.Modulation))
Console.WriteLine(String.Format("Fixed pattern damage : {0}", test.FixedPatternDamage))
For Each name As String In test.AdditionalGrades.Keys
Console.WriteLine(String.Format("{0}: {1}", name.PadRight(40, " "C), test.AdditionalGrades(name)))
Next
If test.QuietZone IsNot Nothing Then
Console.WriteLine(String.Format("Quiet zone : {0} ({1})", test.QuietZone.GradeText, test.QuietZone.ValueText))
End If
Console.WriteLine(String.Format("Distortion angle (informative) : {0}", test.DistortionAngle.ValueText))
Console.WriteLine(String.Format("-------------Scan grade : {0}", test.OverallSymbolGrade))
Console.WriteLine()
Next
End Using
End Sub
End Class
''' <summary>
''' Test that shows how to test the print quality of multi-row 2D barcodes
''' (PDF417, PDF417Compact and MicroPDF417).
''' </summary>
Class ISO15415QualityTestMultiRowExample
''' <summary>
''' Runs the test.
''' </summary>
Public Shared Sub Test()
' load image with barcode from file
Using barcodeImage As VintasoftBitmap = ImageCodecs.[Default].Decode("test1.jpg")
' read barcodes from image and test the print quality of 2D barcodes
ReadBarcodesAndTestBarcodePrintQuality(barcodeImage)
End Using
End Sub
''' <summary>
''' Reads barcodes from image and tests the print quality of 2D barcodes.
''' </summary>
''' <param name="imageWithBarcodes"></param>
Public Shared Sub ReadBarcodesAndTestBarcodePrintQuality(imageWithBarcodes As VintasoftBitmap)
' create the barcode reader
Using reader As New BarcodeReader()
' specify that reader must collect information for quality test
reader.Settings.CollectTestInformation = True
' specify that reader must search for PDF417, PDF417Compact and MicroPDF417 barcodes only
reader.Settings.ScanBarcodeTypes = BarcodeType.PDF417 Or BarcodeType.PDF417Compact Or BarcodeType.MicroPDF417
' read barcodes
Dim barcodeInfos As IBarcodeInfo() = reader.ReadBarcodes(imageWithBarcodes)
' for each found barcode
For i As Integer = 0 To barcodeInfos.Length - 1
' test print quality of barcode using ISO 15415 test
Dim test As New ISO15415QualityTest()
test.CalculateGrades(DirectCast(barcodeInfos(i), BarcodeInfo2D), imageWithBarcodes)
' print results of ISO 15415 test
Console.WriteLine(String.Format("[{0}] {1}", barcodeInfos(i).BarcodeType, barcodeInfos(i).Value))
Console.WriteLine(String.Format("Decode : {0}", test.Decode))
Console.WriteLine(String.Format("Unused error correction: {0} ({1})", test.UnusedErrorCorrection, test.UnusedErrorCorrection.ValueText))
If test.StartPatternTestGrade IsNot Nothing Then
Console.WriteLine(String.Format("Start pattern test: {0}", test.StartPatternTestGrade))
End If
If test.CenterPatternTestGrade IsNot Nothing Then
Console.WriteLine(String.Format("Center pattern test: {0}", test.CenterPatternTestGrade))
End If
If test.CenterPatternTestGrade IsNot Nothing Then
Console.WriteLine(String.Format("Stop pattern test: {0}", test.CenterPatternTestGrade))
End If
Console.WriteLine(String.Format("Codeword yield: {0}", test.CodewordYield))
Console.WriteLine(String.Format("Codeword print quality: {0}", test.CodewordPrintQualityGrade))
If test.QuietZone IsNot Nothing Then
Console.WriteLine(String.Format("Quiet zone: {0} ({1})", test.QuietZone, test.QuietZone.ValueText))
End If
Console.WriteLine(String.Format("Distortion angle: {0}", test.DistortionAngle.ValueText))
Console.WriteLine(String.Format("-------------Scan grade: {0}", test.OverallSymbolGrade))
Console.WriteLine()
Next
End Using
End Sub
End Class