Barcodes in Bildern unter macOS mit einer .NET-Anwendung erkennen

Blog-Kategorie: Barcode.NETmacOS

25.12.2023

Dieser Artikel erklärt, wie Sie eine .NET-Konsolenanwendung erstellen und Barcodes in Bildern unter macOS erkennen. Für die Barcode-Erkennung aus Bildern wird das VintaSoft Barcode .NET SDK verwendet.

Die folgenden Schritte sind erforderlich:
  1. macOS-Desktop öffnen.

  2. Erstellen Sie einen Ordner, in dem die Dateien der .NET-Anwendung gespeichert werden. Erstellen Sie dazu den Ordner "Recognize_Barcodes_In_Image" auf dem Desktop des aktuellen Benutzers und wechseln Sie in diesen Ordner.


  3. Öffnen Sie das Terminal.


  4. Führen Sie den Befehl im Terminal aus, der ein neues Konsolenprojekt für eine .NET-Anwendung erstellt:
    dotnet new console --framework net8.0
    



    Das erstellte Projekt enthält die Projektdatei "Recognize_Barcodes_In_Image.csproj" und die Datei "Program.cs", die den C#-Code der Anwendung enthält. Schließen Sie das Terminal.

  5. Öffnen Sie die Projektdatei "Recognize_Barcodes_In_Image.csproj" in einem Texteditor und ändern Sie den Dateitext wie folgt:
    <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>
    



    Das geänderte Projekt referenziert die NuGet-Pakete für das VintaSoft Barcode .NET SDK (Vintasoft.Shared.dll, Vintasoft.Barcode.dll, Vintasoft.Barcode.SkiaSharp.dll).

  6. Öffnen Sie die Datei "Program.cs" und ändern Sie deren Code in folgenden C#-Code:
    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();
                        }
                    }
                }
            }
    
        }
    }
    



    Der Anwendungscode erkennt Barcodes in Bildern und gibt das Ergebnis in der Konsole aus.

  7. Holen Sie sich den Code für die Verwendung der Evaluierungsversion unter macOS gemäß der Beschreibung in Dokumentation und fügen Sie den erhaltenen Code in den C#-Code der Datei "Program.cs" ein.


  8. Kopieren Sie die Datei "AllSupportedBarcodes.png" in den Projektordner.


    Sie können anstelle der Datei "AllSupportedBarcodes.png" auch eine andere Datei mit Barcodes verwenden.

  9. Öffnen Sie das Terminal und kompilieren Sie das .NET-Projekt mit folgendem Befehl:
    dotnet build Recognize_Barcodes_In_Image.csproj
    



    Schließen Sie das Terminal.

  10. Wechseln Sie zum Ordner "bin/Debug/net8.0/".


  11. Öffnen Sie das Terminal und führen Sie die .NET-Anwendung mit folgendem Befehl aus:
    dotnet ./Recognize_Barcodes_In_Image.dll
    



    Sehen Sie sich das Ergebnis der Barcode-Erkennung an und schließen Sie das Terminal.