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

Catégorie du blog: Code-barres.NETmacOS

25.12.2023

Cet article explique comment créer une application console .NET et reconnaître les codes-barres dans une image sous macOS. La reconnaissance des codes-barres à partir d'une image utilise le VintaSoft Barcode .NET SDK.

Voici les étapes à suivre:
  1. Ouvrir le bureau macOS.

  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. Ouvrir le terminal de commande.


  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.macOS" 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 macOS 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.