Lesen von Strichcodes aus System.Drawing-Objekten

Hairil Hasyimi Bin Omar
Hairil Hasyimi Bin Omar
13. September 2023
Aktualisiert 10. Dezember 2024
Teilen Sie:
This article was translated from English: Does it need improvement?
Translated
View the article in English

System.Drawing-Objekte werden in .NET häufig für Aufgaben im Zusammenhang mit der Bildverarbeitung von Entwicklern verwendet. Microsoft hat jedoch den Support für System.Drawing auf anderen Betriebssystemen wie MacOS und Linux eingestellt und unterstützt jetzt ausschließlich Windows. Diese wichtige Änderung hat zu zahlreichen Problemen für Entwickler geführt, die IronBarcode auf anderen Betriebssystemen als Windows verwenden. Dies liegt daran, dass die Arbeit mit Barcodes typischerweise die Verwendung von Objekten wie Grafiken, Bildern und Schriftarten beinhaltet.

Um dieses Problem zu lösen, haben wir eine alternative Lösung eingeführt: IronDrawing. Diese kostenlose und Open-Source-Bibliothek, initiiert von IronSoftware, zielt darauf ab, den Prozess zu vereinfachen, es auf anderen Betriebssystemen als Windows lauffähig zu machen. Dies bietet eine benutzerfreundliche Erfahrung für unsere Nutzer. Sobald Sie IronBarcode von NuGet installieren, wird IronDrawing automatisch in Ihr Projekt eingebunden.

Erste Schritte mit IronBarcode

Beginnen Sie noch heute mit der Verwendung von IronBarcode in Ihrem Projekt mit einer kostenlosen Testversion.

Erster Schritt:
green arrow pointer


Cast System.Drawing zu AnyBitmap

Beim Lesen von Strichcodes aus System.Drawing wird das Objekt einfach auf AnyBitmap gecastet. Bei der Entwicklung von IronDrawing stand die Benutzerfreundlichkeit im Vordergrund. Folglich unterstützt IronDrawing die implizite Umwandlung von Bildobjekten aus System.Drawing in IronSoftware.Drawing-Bildobjekte, die AnyBitmap genannt werden.

Zusätzlich zu den System.Drawing-Objekten unterstützen wir auch das Casting von anderen Objekttypen, einschließlich:

  • System.Drawing.Bitmap
  • System.Drawing.Image
  • SkiaSharp.SKBitmap
  • SkiaSharp.SKImage
  • SixLabors.ImageSharp

    Benutzer können das folgende Codebeispiel für das Umwandeln von Objekten oben heranziehen. Unten ist ein Codeausschnitt, der zeigt, wie Bilder von Barcodes aus System.Drawing-Objekten in IronSoftware.Drawing.AnyBitmap umgewandelt werden können.

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-system-drawing-cast-to-anybitmap.cs
using IronSoftware.Drawing;
using System.Collections.Generic;

List<AnyBitmap> barcodes = new List<AnyBitmap>();

// Instantiate System.Drawing.Bitmap
System.Drawing.Bitmap bitmapFromBitmap = new System.Drawing.Bitmap("test1.jpg");

// Cast from System.Drawing.Bitmap to AnyBitmap
AnyBitmap barcode1 = bitmapFromBitmap;

barcodes.Add(barcode1);

// Instantiate System.Drawing.Bitmap
System.Drawing.Image bitmapFromFile = System.Drawing.Image.FromFile("test2.png");

// Cast from System.Drawing.Image to AnyBitmap
AnyBitmap barcode2 = bitmapFromFile;

barcodes.Add(barcode2);
Imports IronSoftware.Drawing
Imports System.Collections.Generic

Private barcodes As New List(Of AnyBitmap)()

' Instantiate System.Drawing.Bitmap
Private bitmapFromBitmap As New System.Drawing.Bitmap("test1.jpg")

' Cast from System.Drawing.Bitmap to AnyBitmap
Private barcode1 As AnyBitmap = bitmapFromBitmap

barcodes.Add(barcode1)

' Instantiate System.Drawing.Bitmap
Dim bitmapFromFile As System.Drawing.Image = System.Drawing.Image.FromFile("test2.png")

' Cast from System.Drawing.Image to AnyBitmap
Dim barcode2 As AnyBitmap = bitmapFromFile

barcodes.Add(barcode2)
$vbLabelText   $csharpLabel

Aus dem obigen Codeausschnitt haben wir zwei Barcode-Bilder als System.Drawing.Bitmap und System.Drawing.Image geladen. Wir wandeln sie dann implizit in AnyBitmap um, indem wir sie einfach AnyBitmap-Objekten zuweisen. Anschließend haben wir diese Objekte in eine AnyBitmap-Liste aufgenommen.

Barcodes von AnyBitmap lesen

IronBarcode kann IronSoftware.Drawing.AnyBitmap-Objekte in allen seinen Methoden problemlos akzeptieren, ohne dass eine zusätzliche Konfiguration erforderlich ist. Dies bietet Entwicklern, die IronBarcode mit System.Drawing-Objekten verwenden, die auf anderen Betriebssystemen als Windows nicht unterstützt werden, eine einfache Handhabung. Der nachstehende Codeschnipsel zeigt, wie dies zu bewerkstelligen ist.

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-system-drawing-read-anybitmap.cs
using IronBarCode;
using IronSoftware.Drawing;
using System;
using System.Collections.Generic;

List<AnyBitmap> barcodes = new List<AnyBitmap>();

System.Drawing.Bitmap bitmapFromBitmap = new System.Drawing.Bitmap("test1.jpg");
AnyBitmap barcode1 = bitmapFromBitmap;
barcodes.Add(barcode1);

System.Drawing.Image bitmapFromFile = System.Drawing.Image.FromFile("test2.png");
AnyBitmap barcode2 = bitmapFromFile;
barcodes.Add(barcode2);

foreach (var barcode in barcodes)
{
    // Read the barcode
    var results = BarcodeReader.Read(barcode);
    foreach (var result in results)
    {
        // Output the detected barcode value
        Console.WriteLine(result.Value);
    }
}
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System
Imports System.Collections.Generic

Private barcodes As New List(Of AnyBitmap)()

Private bitmapFromBitmap As New System.Drawing.Bitmap("test1.jpg")
Private barcode1 As AnyBitmap = bitmapFromBitmap
barcodes.Add(barcode1)

Dim bitmapFromFile As System.Drawing.Image = System.Drawing.Image.FromFile("test2.png")
Dim barcode2 As AnyBitmap = bitmapFromFile
barcodes.Add(barcode2)

For Each barcode In barcodes
	' Read the barcode
	Dim results = BarcodeReader.Read(barcode)
	For Each result In results
		' Output the detected barcode value
		Console.WriteLine(result.Value)
	Next result
Next barcode
$vbLabelText   $csharpLabel

Der obige Codeschnipsel ist eine Erweiterung des vorherigen. Sobald wir die AnyBitmap-Liste gefüllt hatten, iterierten wir durch die Liste und riefen die Read-Methode für jedes AnyBitmap-Objekt als Parameter auf, was dann IronBarcode.BarcodeResults zurückgab. Wir haben dann das zurückgegebene Objekt durchlaufen, um den Barcodewert auf der Konsole auszugeben.

Der Funktionsbereich in IronSoftware.Drawing ist nicht nur auf das Konvertieren von Bildern beschränkt. Es wird auch stark in anderen Aspekten der Bildverarbeitung verwendet, wie z.B. Farben und Schriften, die nützlich beim Styling von Barcodes und QR-Codes sind. Benutzer können erkunden, wie wir IronDrawing verwenden, um QR-Codes anzupassen und Logos hinzuzufügen.

Hairil Hasyimi Bin Omar
Software-Ingenieur
Wie alle großartigen Ingenieure ist Hairil ein eifriger Lerner. Er verfeinert seine Kenntnisse in C#, Python und Java und nutzt dieses Wissen, um den Teammitgliedern von Iron Software einen Mehrwert zu bieten. Hairil kam von der Universiti Teknologi MARA in Malaysia zum Iron Software-Team, wo er einen Bachelor-Abschluss in Chemie- und Verfahrenstechnik erwarb.