VintaSoft Barcode .NET SDK 15.1: Руководство для .NET разработчика
Vintasoft.Barcode.QualityTests Namespace / ISO15415QualityTest Class / AdditionalGrades Property
Синтаксис Ремарки Example Требования Смотрите также
В этом разделе
    AdditionalGrades Свойство (ISO15415QualityTest)
    В этом разделе
    Возвращает дополнительные оценки, которые зависят от символики штрих-кода.
    Синтаксис
    Ремарки

    Дополнительные оценки для штрих-кода Data Matrix (определены в приложении M стандарта ISO 16022):

    • FixedPatternDamage.L1 - оценка сегмента L1 (см. ниже).
    • FixedPatternDamage.L2 - оценка сегмента L2 (см. ниже).
    • FixedPatternDamage.QZL1 - оценка сегмента QZL1 (см. ниже).
    • FixedPatternDamage.QZL2 - уровень сегмента QZL2 (см. ниже).
    • FixedPatternDamage.Segment_X_Y_Top - уровень шаблонов выравнивания по верхней область) области данных, расположенной по указанным индексам (X, Y).
    • FixedPatternDamage.Segment_X_Y_Right - степень шаблонов выравнивания вправо (часовая дорожка и сплошная область) области данных, расположенной по указанные индексы (X, Y).
    • FixedPatternDamage.ClockAndSolidArea - оценка всех шаблонов выравнивания областей данных.
    • FixedPatternDamage.AG - средняя оценка L1, L2, QZL1, QZL2, ClockAndSolidArea.

    Сегмент L1 представляет собой вертикальную часть L и простирается до модуля в тихой зоне, примыкающей к л угол. Сегмент L2 представляет собой горизонтальную часть L и простирается до модуля в тихой зоне, примыкающей к углу L. Сегменты QZL1 и QZL2 представляют собой части тихой зоны, примыкающие к L1 и L2 соответственно, и простираются на один модуль за конец L1 и L2 соответственно, дальше всего от угла.

    Дополнительные оценки для штрих-кода Han Xin Code Matrix (определены в спецификации):
    • FixedPatternDamage.A1 - оценка 11 x 11 в левом верхнем углу символа (шаблон поиска и тихий zone).
    • FixedPatternDamage.A2 - оценка 11 x 11 в правом верхнем углу символа (шаблон поиска и тихая зона).
    • FixedPatternDamage.A3 - оценка 11 x 11 в правом нижнем углу символа (шаблон поиска и тихая зона).
    • FixedPatternDamage.A4 - оценка 11 x 11 в левом нижнем углу символа (шаблон поиска). и тихая зона).
    • FixedPatternDamage.B - степень шаблона выравнивания и шаблона выравнивания помощника.
    • StructuralInformationRegion.Region1 - Уровень области структурной информации 1 (слева вверху и справа вверху).
    • StructuralInformationRegion.Region2 - уровень области структурной информации 1 (слева внизу и справа внизу).
    • StructuralInformationRegion.Region - уровень структурной информации, регион 1 и регион 2.

    Пример

    Вот С#/VB.NET код, демонстрирующий, как проверить качество печати матричных 2D-штрих-кодов (Aztec, DataMatrix, QR и MicroQR):

       
       
    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()   
            ' 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>
        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}", GradeToString(test.DecodeGrade)))   
                    Console.WriteLine(String.Format("Unused error correction                 : {0} ({1}%)", GradeToString(test.UnusedErrorCorrectionGrade), test.UnusedErrorCorrection))   
                    Console.WriteLine(String.Format("Symbol contrast                         : {0} ({1}%)", GradeToString(test.SymbolContrastGrade), test.SymbolContrast))   
                    Console.WriteLine(String.Format("Axial nonuniformity                     : {0} ({1})", GradeToString(test.AxialNonuniformityGrade), test.AxialNonuniformity))   
                    Console.WriteLine(String.Format("Grid nonuniformity                      : {0} ({1} cell)", GradeToString(test.GridNonuniformityGrade), test.GridNonuniformity))   
                    Console.WriteLine(String.Format("Modulation                              : {0}", GradeToString(test.ModulationGrade)))   
                    Console.WriteLine(String.Format("Reflectance margin                      : {0}", GradeToString(test.ReflectanceMarginGrade)))   
                    Console.WriteLine(String.Format("Fixed pattern damage                    : {0}", GradeToString(test.FixedPatternDamageGrade)))   
                    For Each name As String In test.AdditionalGrades.Keys   
                        Console.WriteLine(String.Format("{0}: {1}", name.PadRight(40, " "C), GradeToString(test.AdditionalGrades(name))))   
                    Next   
                    If test.QuietZone >= 0 Then   
                        Console.WriteLine(String.Format("Quiet zone                              : {0} ({1} %)", GradeToString(test.QuietZoneGrade), test.QuietZone))   
                    End If   
                    Console.WriteLine(String.Format("Distortion angle (informative)          : {0}�", test.DistortionAngle))   
                    Console.WriteLine(String.Format("-------------Scan grade                 : {0}", GradeToString(test.ScanGrade)))   
                    Console.WriteLine()   
                Next   
            End Using   
        End Sub   
       
        ''' <summary>
        ''' Converts ISO15415 quality grade into string value.
        ''' </summary>
        Private Shared Function GradeToString(grade As ISO15415QualityGrade) As String   
            Return String.Format("{0}({1})", CInt(grade).ToString(), grade)   
        End Function   
       
    End Class
    
    
    
    using System;
    
    using Vintasoft.Imaging;
    
    using Vintasoft.Barcode;
    using Vintasoft.Barcode.BarcodeInfo;
    using 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 static void Test()
        {
            // load image with barcode from file
            using (VintasoftBitmap barcodeImage = ImageCodecs.Default.Decode("test1.jpg"))
            {
                // read barcodes from image and test the print quality of 2D barcodes
                ReadBarcodesAndTestBarcodePrintQuality(barcodeImage);
            }
        }
        
        /// <summary>
        /// Reads barcodes from image and tests the print quality of 2D barcodes.
        /// </summary>
        public static void ReadBarcodesAndTestBarcodePrintQuality(VintasoftBitmap imageWithBarcodes)
        {
            // create the barcode reader
            using (BarcodeReader reader = 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 | BarcodeType.DataMatrix |
                    BarcodeType.QR | BarcodeType.MicroQR | BarcodeType.HanXinCode;
                
                // read barcodes
                IBarcodeInfo[] barcodeInfos = reader.ReadBarcodes(imageWithBarcodes);
                
                // for each found barcode
                for (int i = 0; i < barcodeInfos.Length; i++)
                {
                    // test print quality of barcode using ISO 15415 test
                    ISO15415QualityTest test = new ISO15415QualityTest();
                    test.CalculateGrades((BarcodeInfo2D)barcodeInfos[i], 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}",
                        GradeToString(test.DecodeGrade)));
                    Console.WriteLine(string.Format("Unused error correction                 : {0} ({1}%)",
                        GradeToString(test.UnusedErrorCorrectionGrade), test.UnusedErrorCorrection));
                    Console.WriteLine(string.Format("Symbol contrast                         : {0} ({1}%)",
                        GradeToString(test.SymbolContrastGrade), test.SymbolContrast));
                    Console.WriteLine(string.Format("Axial nonuniformity                     : {0} ({1})",
                        GradeToString(test.AxialNonuniformityGrade), test.AxialNonuniformity));
                    Console.WriteLine(string.Format("Grid nonuniformity                      : {0} ({1} cell)",
                        GradeToString(test.GridNonuniformityGrade), test.GridNonuniformity));
                    Console.WriteLine(string.Format("Modulation                              : {0}",
                        GradeToString(test.ModulationGrade)));
                    Console.WriteLine(string.Format("Reflectance margin                      : {0}",
                        GradeToString(test.ReflectanceMarginGrade)));
                    Console.WriteLine(string.Format("Fixed pattern damage                    : {0}",
                        GradeToString(test.FixedPatternDamageGrade)));
                    foreach (string name in test.AdditionalGrades.Keys)
                        Console.WriteLine(string.Format("{0}: {1}",
                            name.PadRight(40, ' '), GradeToString(test.AdditionalGrades[name])));
                    if (test.QuietZone >= 0)
                        Console.WriteLine(string.Format("Quiet zone                              : {0} ({1} %)",
                            GradeToString(test.QuietZoneGrade), test.QuietZone));
                    Console.WriteLine(string.Format("Distortion angle (informative)          : {0}°",
                        test.DistortionAngle));
                    Console.WriteLine(string.Format("-------------Scan grade                 : {0}",
                        GradeToString(test.ScanGrade)));
                    Console.WriteLine();
                }
            }
        }
    
        /// <summary>
        /// Converts ISO15415 quality grade into string value.
        /// </summary>
        static string GradeToString(ISO15415QualityGrade grade)
        {
            return string.Format("{0}({1})", ((int)grade).ToString(), grade);
        }
    
    }
    
    

    Требования

    Целевые платформы: .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

    Смотрите также