Reconnaissance de codes-barres dans une image sous Linux à l'aide d'une application .NET

Catégorie du blog: Code-barres.NETLinux

15.12.2023

Cet article explique comment créer une application console .NET et reconnaître les codes-barres dans une image sous Ubuntu. VintaSoft Barcode .NET SDK est utilisé pour la reconnaissance des codes-barres dans une image.

Voici les étapes à suivre:
  1. Ouvrez le bureau Ubuntu.

  2. Créez un dossier qui stockera les fichiers de l'application .NET. Créons le dossier "Recognize_Barcodes_In_Image" sur le bureau de l'utilisateur actuel et accédons à ce dossier.


  3. Ouvrez le terminal de commande. Vous pouvez le faire en choisissant l'option "Ouvrir dans le terminal" dans le menu contextuel ou en appuyant sur la combinaison de touches Ctrl+Alt+T.


  4. Exécutez la commande dans le terminal pour créer un projet d'application console .NET:
    dotnet new console --framework net8.0
    



    Le projet créé contient le fichier projet "Recognize_Barcodes_In_Image.csproj" et le fichier "Program.cs", qui contient le code C# de l'application. Fermez le terminal.

  5. Ouvrez le fichier projet "Recognize_Barcodes_In_Image.csproj" dans un éditeur de texte et modifiez son contenu comme suit:
    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net8.0</TargetFramework>
        <RootNamespace>ConsoleApp1</RootNamespace>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="SkiaSharp" Version="2.88.6" />
        <PackageReference Include="SkiaSharp.NativeAssets.Linux" Version="2.88.6" />
        <PackageReference Include="Vintasoft.Barcode" Version="14.2.0.3" />
        <PackageReference Include="Vintasoft.Barcode.SkiaSharp" Version="14.2.0.3" />
        <PackageReference Include="Vintasoft.Shared" Version="4.1.0.3" />
      </ItemGroup>
    
      <ItemGroup>
        <Content Include="AllSupportedBarcodes.png">
          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        </Content>
      </ItemGroup>
    
    </Project>
    



    Le projet modifié référence les packages NuGet du VintaSoft Barcode .NET SDK (Vintasoft.Shared.dll, Vintasoft.Barcode.dll, Vintasoft.Barcode.SkiaSharp.dll).

  6. Ouvrez le fichier "Program.cs" et modifiez son code pour utiliser le code C# suivant:
    namespace Recognize_Barcodes_In_Image
    {
        class Program
        {
            static void Main(string[] args)
            {
                // register the evaluation license for VintaSoft Barcode .NET SDK
                Vintasoft.Barcode.BarcodeGlobalSettings.Register("%EVAL_LIC_USER_NAME%", "%EVAL_LIC_USER_EMAIL%", "%EVAL_LIC_DATE%", "%EVAL_LIC_REG_CODE%");
    
                // Vintasoft.Barcode.SkiaSharp.dll allows to load bitmap from BMP, DNG, GIF, HEIF, JPEG, PNG, WEBP files using image codecs from SkiaSharp library
                Vintasoft.Barcode.SkiaSharpAssembly.Init();
    
                // recognize barcodes from image file
                RecognizeBarcodesFromImage("AllSupportedBarcodes.png");
            }
    
            /// <summary>
            /// Recognizes barcodes from an image file.
            /// </summary>
            /// <param name="filename">A path to an image file.</param>
            public static void RecognizeBarcodesFromImage(string filename)
            {
                // create barcode reader
                using (Vintasoft.Barcode.BarcodeReader reader = new Vintasoft.Barcode.BarcodeReader())
                {
                    // specify that reader must search for Code39, Code39Extended, Code128, SSCC18 and DataMatrix barcodes
                    reader.Settings.ScanBarcodeTypes =
                        Vintasoft.Barcode.BarcodeType.Code39 |
                        Vintasoft.Barcode.BarcodeType.Code128 |
                        Vintasoft.Barcode.BarcodeType.DataMatrix;
                    reader.Settings.ScanBarcodeSubsets.Add(Vintasoft.Barcode.SymbologySubsets.BarcodeSymbologySubsets.Code39Extended);
                    reader.Settings.ScanBarcodeSubsets.Add(Vintasoft.Barcode.SymbologySubsets.BarcodeSymbologySubsets.SSCC18);
    
                    // specify that reader must search for horizontal and vertical barcodes only
                    reader.Settings.ScanDirection = Vintasoft.Barcode.ScanDirection.Horizontal | Vintasoft.Barcode.ScanDirection.Vertical;
    
                    // use Automatic Recognition
                    reader.Settings.AutomaticRecognition = true;
    
                    // read barcodes from image file
                    Vintasoft.Barcode.IBarcodeInfo[] infos = reader.ReadBarcodes(filename);
    
                    // if barcodes are not detected
                    if (infos.Length == 0)
                    {
                        Console.WriteLine("No barcodes found.");
                    }
                    // if barcodes are detected
                    else
                    {
                        // get information about extracted barcodes
    
                        Console.WriteLine(string.Format("{0} barcodes found:", infos.Length));
                        Console.WriteLine();
                        for (int i = 0; i < infos.Length; i++)
                        {
                            Vintasoft.Barcode.IBarcodeInfo info = infos[i];
                            Console.WriteLine(string.Format("[{0}:{1}]", i + 1, info.BarcodeType));
                            Console.WriteLine(string.Format("Value:      {0}", info.Value));
                            Console.WriteLine(string.Format("Region:     {0}", info.Region));
                            Console.WriteLine();
                        }
                    }
                }
            }
    
        }
    }
    



    Le code de l’application reconnaîtra les codes-barres présents dans l’image et affichera le résultat dans la console.

  7. Obtenez le code pour utiliser la version d'évaluation sous Linux en suivant la méthode décrite dans la documentation et insérez le code obtenu dans le code C# du fichier "Program.cs".


  8. Copiez le fichier "AllSupportedBarcodes.png" dans le dossier du projet.


    Vous pouvez utiliser n’importe quel autre fichier contenant des codes-barres à la place de "AllSupportedBarcodes.png".

  9. Ouvrez le terminal et compilez le projet .NET à l’aide de la commande suivante:
    dotnet build Recognize_Barcodes_In_Image.csproj
    



    Fermez le terminal.

  10. Accédez au dossier "bin/Debug/net8.0/".


  11. Ouvrez le terminal et exécutez l'application .NET à l'aide de la commande suivante:
    dotnet ./Recognize_Barcodes_In_Image.dll
    



    Consultez le résultat de la reconnaissance des codes-barres et fermez le terminal.