Migrating frombarKoder SDKto IronBarcode
Barkoder liefert offizielle .NET-Pakete — Plugin.Maui.Barkoder und Barkoder.Xamarin — aber beide sind strikt mobile Kamera-Scan-Komponenten. Wenn Sie barKoder für seinen MatrixSight-Algorithmus, den DeBlur-Modus, die Multi-Barcode-Erkennung oder den DPM-Support evaluiert haben und dann festgestellt haben, dass Sie Dateieingabe, PDF-Verarbeitung, serverseitige Bereitstellung oder Barcode-Generierung benötigen, ist davon nichts von barKoder auf .NET verfügbar. Dieser Leitfaden zeigt, wie IronBarcode jedes dieser Anforderungen abdeckt, mit funktionierendem Code für jedes Szenario.
Warum vonbarKoder SDKmigrieren
Teams, die von einer barKoder-Evaluierung zu IronBarcode wechseln, berichten durchweg die gleichen Auslöser:
Nur mobile Kameraoberfläche: Barkoders .NET-Fußabdruck ist Plugin.Maui.Barkoder (v1.6.8, März 2026) und Barkoder.Xamarin (v1.3.0). Beide umschließen die nativen iOS / Android SDKs und bieten eine BarkoderView Kamera-Steuerung. Es gibt keine allgemeine Barkoder.NET Bibliothek, kein ASP.NET Core-Ziel, kein Konsolen- / Worker- / Desktop-Ziel und kein Linux-Server-Ziel.
Nur-Lese-Architektur: Barkoder ist ein SDK, das nur zum Scannen geeignet ist. Wenn Ihre Anwendung Barcodes generieren muss – Versandetiketten drucken, QR-Codes für Verpackungen erstellen, Codes in Dokumente einbetten –, bietet Barkoder nichts. Teams, die mitten im Projekt eine Generierungsanforderung entdecken, benötigen eine Bibliothek, die beide Seiten des Workflows abdeckt.
Keine PDF-Verarbeitung: In .NET Enterprise kommen Barcodes häufig in PDF-Dokumenten vor – Rechnungen, Versandmanifeste, Krankenakten, Compliance-Dokumente. Barkoder hat keine Ahnung von diesem Arbeitsablauf. Es ist für die Live-Kameraeingabe auf einem Mobilgerät konzipiert und kann keine PDF-Dateien verarbeiten.
Keine serverseitige Bereitstellung: Barkoders Verarbeitungsmodell basiert auf dem Scannen von Mobilgeräten direkt auf dem Gerät. Es kann nicht in ASP.NET Core, Azure Functions, Docker-Containern oder AWS Lambda ausgeführt werden. Teams, die serverseitige Barcode-APIs, Dokumentenverarbeitungspipelines oder Cloud-Funktionen entwickeln, haben keine Möglichkeit, Barkoder einzusetzen.
Keine Datei- / Stream-Eingabe: Selbst innerhalb einer MAUI-App verwendet BarkoderView nur Live-Kameraframes. Es gibt keine Pfad-, Byte-Array- oder Stream Überlastung, daher erfordert die Verarbeitung eines hochgeladenen Bildes oder eines Galerie-Fotos eine andere Bibliothek.
Die Grundgrenze
Barkoders MAUI-Oberfläche ist kameragebunden. Ein .NET-Entwickler, der Plugin.Maui.Barkoder verwendet, schreibt Code, der so aussieht:
// dotnet add package Plugin.Maui.Barkoder
using Barkoder.Maui;
public partial class ScanPage : ContentPage, IBarkoderDelegate
{
public ScanPage()
{
InitializeComponent();
BarkoderView.SetFlashEnabled(false);
BarkoderView.StartScanning(this);
}
public void DidFinishScanning(BarcodeResult[] result)
{
foreach (var r in result)
Console.WriteLine($"{r.BarcodeTypeName}: {r.TextualData}");
}
}Imports Barkoder.Maui
Public Partial Class ScanPage
Inherits ContentPage
Implements IBarkoderDelegate
Public Sub New()
InitializeComponent()
BarkoderView.SetFlashEnabled(False)
BarkoderView.StartScanning(Me)
End Sub
Public Sub DidFinishScanning(result As BarcodeResult()) Implements IBarkoderDelegate.DidFinishScanning
For Each r In result
Console.WriteLine($"{r.BarcodeTypeName}: {r.TextualData}")
Next
End Sub
End ClassIronBarcode bietet eine Datei- / Stream- / PDF-API für dieselben Daten:
// dotnet add package BarCode
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.ExtremeDetail,
ExpectMultipleBarcodes = false,
};
var results = BarcodeReader.Read("scanned-label.png", options);
foreach (var result in results)
{
Console.WriteLine($"Format: {result.Format} | Value: {result.Value}");
}Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.ExtremeDetail,
.ExpectMultipleBarcodes = False
}
Dim results = BarcodeReader.Read("scanned-label.png", options)
For Each result In results
Console.WriteLine($"Format: {result.Format} | Value: {result.Value}")
NextIronBarcode vs barKoder SDK: Funktionsvergleich
| Feature | barKoder SDK | IronBarcode |
|---|---|---|
| .NET / C# API | Nur MAUI / Xamarin Kamera UI | Vollständige .NET-Oberfläche |
| NuGet-Paket | Plugin.Maui.Barkoder, Barkoder.Xamarin | BarCode |
| Wiederherstellung beschädigter Barcodes | MatrixSight / Entschärfung | ReadingSpeed.ExtremeDetail + ML |
| Erkennung mehrerer Barcodes | Ja | ExpectMultipleBarcodes = true |
| DataMatrix / DPM | Ja (nur lesbar) | Ja – lesen und generieren |
| QR-Code | Ja (nur lesbar) | Ja – lesen und generieren |
| PDF417 | Ja | Ja |
| aztekisch | Ja | Ja |
| Code128, Code39, EAN | Ja | Ja – mehr als 50 Formate |
| Barcode-Generierung | None | Vollständig – alle Formate |
| PDF-Verarbeitung | None | Native |
| Datei / Stream / byte[] Eingabe | Keine — nur Kamera-Frames | Ja |
| ASP.NET Core | None | Voll |
| Docker / Linux | None | Voll |
| Azure Functions | None | Voll |
| AWS Lambda | None | Voll |
| Offline / Luftgekühlt | Auf dem Gerät | Vollständig lokal |
| Async / Await | Rückrufbasiert | Voll |
| Abhängigkeitsinjektion | None | Vollständige .NET DI |
| iOS über MAUI | Plugin.Maui.Barkoder (Kamera-UI) | Programmgesteuert (Datei / Stream) |
| Android über MAUI | Plugin.Maui.Barkoder (Kamera-UI) | Programmgesteuert (Datei / Stream) |
| Preisgestaltung | Jahresabonnement | Ab 749 $ (dauerhaft) |
Schnellstart: Migration vonbarKoder SDKzu IronBarcode
Schritt 1: Ersetzen des NuGet-Pakets
IronBarcode installieren:
Wenn Ihr Projekt Plugin.Maui.Barkoder oder Barkoder.Xamarin nur für nicht-kamera Workflows verwendet (oder Sie vollständig zu Datei- / PDF-Verarbeitung wechseln), entfernen Sie es:
dotnet remove package Plugin.Maui.Barkoder
Falls die App weiterhin eine Live-Kamera-UI benötigt, behalten Sie Plugin.Maui.Barkoder und fügen Sie IronBarcode für die Datei- / PDF- / Generierungsarbeit hinzu.
Schritt 2: Namespaces aktualisieren
Entfernen Sie den barKoder Namespace, wo er nicht mehr benötigt wird, und fügen Sie den IronBarcode Namespace hinzu:
// Remove (if no longer needed)
// using Barkoder.Maui;
// Add
using IronBarCode;Imports IronBarCodeSchritt 3: Lizenz initialisieren
Fügen Sie die Lizenzinitialisierung beim Anwendungsstart hinzu — in Program.cs für ASP.NET Core oder vor jedem Barcode-Vorgang in Konsolen- oder Desktop-Apps:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"Beispiele für die Code-Migration
Barcodes aus Bildern lesen
Das Kernleseszenario wird von barKoders Live-Kamera-Frames zu IronBarcodes Datei- / Stream- / byte[] API abgebildet.
barKoder MAUI-Ansatz:
// dotnet add package Plugin.Maui.Barkoder
using Barkoder.Maui;
public partial class ScanPage : ContentPage, IBarkoderDelegate
{
public ScanPage()
{
InitializeComponent();
BarkoderView.StartScanning(this);
}
public void DidFinishScanning(BarcodeResult[] result)
{
foreach (var r in result)
{
Console.WriteLine($"Barcode: {r.TextualData}");
Console.WriteLine($"Type: {r.BarcodeTypeName}");
}
}
}Imports Barkoder.Maui
Public Partial Class ScanPage
Inherits ContentPage
Implements IBarkoderDelegate
Public Sub New()
InitializeComponent()
BarkoderView.StartScanning(Me)
End Sub
Public Sub DidFinishScanning(result As BarcodeResult()) Implements IBarkoderDelegate.DidFinishScanning
For Each r In result
Console.WriteLine($"Barcode: {r.TextualData}")
Console.WriteLine($"Type: {r.BarcodeTypeName}")
Next
End Sub
End ClassIronBarcode -Ansatz:
// dotnet add package BarCode
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var results = BarcodeReader.Read("scan.png");
foreach (var result in results)
{
Console.WriteLine($"Format: {result.Format}");
Console.WriteLine($"Value: {result.Value}");
}Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim results = BarcodeReader.Read("scan.png")
For Each result In results
Console.WriteLine($"Format: {result.Format}")
Console.WriteLine($"Value: {result.Value}")
NextIronBarcodes BarcodeReader.Read() erkennt das Barcode-Format automatisch, ohne dass ein Format im Voraus spezifiziert werden muss. Der gleiche Aufruf funktioniert für Bilder, die mit einem Mobilgerät aufgenommen und auf einen Server hochgeladen wurden, für Bilder, die aus einem Dateisystem geladen wurden, oder für Bilder, die als Byte-Arrays aus einem Datenstrom empfangen wurden. Eine ausführliche Leseanleitung finden Sie im IronBarcode Leseleitfaden .
Wiederherstellung beschädigter Barcodes (entspricht dem Entschärfungsmodus)
Der DeBlur-Modus von Barkoder ist eine seiner am häufigsten genannten Funktionen. IronBarcode bietet das Äquivalent für Dateieingaben über ReadingSpeed.ExtremeDetail.
barKoder MAUI-Ansatz:
// Live camera scanning with DeBlur enabled via configuration
using Barkoder.Maui;
BarkoderView.SetEnabledBarcodeTypes(/* configure formats */);
BarkoderView.StartScanning(this);
public void DidFinishScanning(BarcodeResult[] result)
{
foreach (var r in result)
Console.WriteLine($"Recovered: {r.TextualData}");
}Imports Barkoder.Maui
' Live camera scanning with DeBlur enabled via configuration
BarkoderView.SetEnabledBarcodeTypes() ' configure formats
BarkoderView.StartScanning(Me)
Public Sub DidFinishScanning(result As BarcodeResult())
For Each r In result
Console.WriteLine($"Recovered: {r.TextualData}")
Next
End SubIronBarcode -Ansatz:
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.ExtremeDetail,
ExpectMultipleBarcodes = false,
};
var results = BarcodeReader.Read("worn-shipping-label.png", options);
if (results.Any())
{
Console.WriteLine($"Recovered barcode: {results.First().Value}");
}
else
{
Console.WriteLine("Could not decode — image quality too low");
}Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.ExtremeDetail,
.ExpectMultipleBarcodes = False
}
Dim results = BarcodeReader.Read("worn-shipping-label.png", options)
If results.Any() Then
Console.WriteLine($"Recovered barcode: {results.First().Value}")
Else
Console.WriteLine("Could not decode — image quality too low")
End IfReadingSpeed.ExtremeDetail führt eine mehrstufige ML-basierte Bildanalyse-Pipeline durch, die Kontrastverbesserung, Schärfung, Rotationskorrektur und Schadenswiederherstellung anwendet, bevor der Dekodierungsversuch unternommen wird. Für Batch-Workflows verwenden Sie ReadingSpeed.Balanced als Standard und greifen nur auf ExtremeDetail zurück für Bilder, die Balanced nicht dekodieren konnten.
Erkennung mehrerer Barcodes
Barkoders Multi-Barcode-Frame-Scanning korrespondiert mit IronBarcodes ExpectMultipleBarcodes Option, die sowohl mit Bildern als auch mit PDFs funktioniert.
barKoder MAUI-Ansatz:
// Live camera frame returns BarcodeResult[]; multi-scan configured on the view
using Barkoder.Maui;
BarkoderView.StartScanning(this);
public void DidFinishScanning(BarcodeResult[] result)
{
foreach (var r in result)
Console.WriteLine($"{r.BarcodeTypeName}: {r.TextualData}");
}Imports Barkoder.Maui
BarkoderView.StartScanning(Me)
Public Sub DidFinishScanning(result As BarcodeResult())
For Each r In result
Console.WriteLine($"{r.BarcodeTypeName}: {r.TextualData}")
Next
End SubIronBarcode -Ansatz:
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
};
// Works identically on images and PDFs
var results = BarcodeReader.Read("shipping-manifest.pdf", options);
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber} | {barcode.Format} | {barcode.Value}");
}Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Balanced,
.ExpectMultipleBarcodes = True
}
' Works identically on images and PDFs
Dim results = BarcodeReader.Read("shipping-manifest.pdf", options)
For Each barcode In results
Console.WriteLine($"Page {barcode.PageNumber} | {barcode.Format} | {barcode.Value}")
NextDies ist ein einzelner Methodenaufruf. Keine Seitenextraktion, keine Mehrfachanfragen, kein Verarbeitungsaufwand pro Barcode. Das PDF wird nativ gelesen.
DataMatrix-Generierung und -Lesen
Barkoder liest DataMatrix, kann sie aber nicht generieren. IronBarcode deckt beide Seiten des Arbeitsablaufs ab, was eine gängige Anforderung bei industriellen Trackingsystemen ist.
barKoder MAUI-Ansatz:
// Camera-only DataMatrix scanning; no generation available
using Barkoder.Maui;
BarkoderView.StartScanning(this);
public void DidFinishScanning(BarcodeResult[] result)
{
foreach (var r in result)
Console.WriteLine($"Part ID: {r.TextualData}");
}Imports Barkoder.Maui
' Camera-only DataMatrix scanning; no generation available
BarkoderView.StartScanning(Me)
Public Sub DidFinishScanning(result As BarcodeResult())
For Each r In result
Console.WriteLine($"Part ID: {r.TextualData}")
Next
End SubIronBarcode -Ansatz:
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Generate a DataMatrix barcode for a part label
BarcodeWriter.CreateBarcode("PART-SN-20240315-A42291", BarcodeEncoding.DataMatrix)
.SaveAsPng("part-label.png");
// Read DataMatrix from a scanned industrial part image
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.ExtremeDetail,
ExpectMultipleBarcodes = false,
};
var results = BarcodeReader.Read("etched-part-photo.png", options);
foreach (var result in results)
{
Console.WriteLine($"Part Serial: {result.Value}");
Console.WriteLine($"Barcode Type: {result.Format}");
}Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
' Generate a DataMatrix barcode for a part label
BarcodeWriter.CreateBarcode("PART-SN-20240315-A42291", BarcodeEncoding.DataMatrix) _
.SaveAsPng("part-label.png")
' Read DataMatrix from a scanned industrial part image
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.ExtremeDetail,
.ExpectMultipleBarcodes = False
}
Dim results = BarcodeReader.Read("etched-part-photo.png", options)
For Each result In results
Console.WriteLine($"Part Serial: {result.Value}")
Console.WriteLine($"Barcode Type: {result.Format}")
NextEine vollständige Liste der unterstützten Kodierungsformate und Generierungsoptionen finden Sie in der IronBarcode -Barcode-Generierungsdokumentation .
QR-Code-Generierung mit Branding
Barkoder generiert keine Barcodes. IronBarcode generiert QR-Codes mit eingebetteten Logos, was eine gängige Anforderung für Marketing-, Verpackungs- und Produktidentifizierungsprozesse ist.
barKoder MAUI-Ansatz:
Not available — Plugin.Maui.Barkoder is a reader-only SDK with no
generation API on any platform.
IronBarcode -Ansatz:
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// QR code with brand logo embedded at centre
QRCodeWriter.CreateQrCode("https://parts.example.com/product/A42", 500)
.AddBrandLogo("company-logo.png")
.SaveAsPng("branded-qr.png");Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
' QR code with brand logo embedded at centre
QRCodeWriter.CreateQrCode("https://parts.example.com/product/A42", 500) _
.AddBrandLogo("company-logo.png") _
.SaveAsPng("branded-qr.png")ASP.NET Core Barcode-API-Endpunkt
Barkoder verfügt über kein serverseitiges Bereitstellungsmodell. Das Äquivalent eines mobilen Scan-Upload-Endpunkts – der ein Bild von einem beliebigen Client empfängt und Barcode-Daten zurückgibt – erfordert eine .NET Bibliothek.
barKoder-Ansatz:
Not available — Plugin.Maui.Barkoder runs only inside a MAUI app head
against a live camera. There is no ASP.NET Core integration and no
server-side execution model.
IronBarcode -Ansatz:
// In Program.cs
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
app.MapPost("/api/scan", async (IFormFile file) =>
{
using var stream = file.OpenReadStream();
var imageBytes = new byte[stream.Length];
await stream.ReadAsync(imageBytes);
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
};
var results = BarcodeReader.Read(imageBytes, options);
return Results.Ok(results.Select(r => new
{
Value = r.Value,
Format = r.Format.ToString(),
}));
});Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
app.MapPost("/api/scan", Async Function(file As IFormFile) As Task(Of IResult)
Using stream = file.OpenReadStream()
Dim imageBytes(CInt(stream.Length) - 1) As Byte
Await stream.ReadAsync(imageBytes, 0, imageBytes.Length)
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Balanced,
.ExpectMultipleBarcodes = True
}
Dim results = BarcodeReader.Read(imageBytes, options)
Return Results.Ok(results.Select(Function(r) New With {
.Value = r.Value,
.Format = r.Format.ToString()
}))
End Using
End Function)##barKoder SDKAPI zu IronBarcode Zuordnungsreferenz
Diese Tabelle ordnet die barKoder MAUI / Xamarin-Oberfläche dem entsprechenden IronBarcode-Aufruf zu:
| barKoder API | IronBarcode Äquivalent |
|---|---|
| Lizenz über das barKoder Portal / Konfig festgelegt | IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY" |
DeBlur-Konfiguration auf BarkoderView | Speed = ReadingSpeed.ExtremeDetail |
Multi-Scan-Konfiguration auf BarkoderView | ExpectMultipleBarcodes = true |
SetEnabledBarcodeTypes(...) | BarcodeEncoding.<Format> (automatisch erkannt beim Lesen) |
BarkoderView.StartScanning(IBarkoderDelegate) | BarcodeReader.Read("image.png") — synchron |
BarcodeResult.TextualData | result.Value |
BarcodeResult.BarcodeTypeName | result.Format |
| MatrixSight-Schadenswiederherstellung | ReadingSpeed.ExtremeDetail mit ML-Vorverarbeitung |
| Eingabe von Live-Kamera-Frames | Dateipfad / Stream / byte[] Eingabe |
| Verarbeitung auf dem Gerät | Vollständig lokal – keine Netzwerkanrufe |
| Keine Unterstützung für Generationen | BarcodeWriter.CreateBarcode() / QRCodeWriter.CreateQrCode() |
| Keine PDF-Unterstützung | BarcodeReader.Read("document.pdf") — nativ |
| Keine Serverbereitstellung | Funktioniert in ASP.NET Core, Docker, Azure Functions und Lambda. |
| Keine Seitenindex (N/V) | result.PageNumber — verfügbar bei PDF-Lesen |
Gängige Migrationsprobleme und Lösungen
Problem 1: NuGet-Paketnamen
barKoder SDK: Die offiziellen .NET-Pakete sind Plugin.Maui.Barkoder und Barkoder.Xamarin. Keines deckt nicht-mobile Szenarien ab.
Lösung: Installieren Sie IronBarcode:
Falls Plugin.Maui.Barkoder nicht mehr benötigt wird (Sie wechseln vollständig zu Datei- / PDF- / Serververarbeitung), entfernen Sie es:
dotnet remove package Plugin.Maui.Barkoder
dotnet add package BarCode
Problem 2: Kamera-Frame-Eingabe vs. Dateieingabe
barKoder SDK: Alle Eingaben erfolgen als Live-Kamera-Frame — ein kontinuierlicher Video-Feed wird auf dem Gerät verarbeitet. Es gibt keinen Dateipfadeingabemodus.
Lösung: IronBarcode akzeptiert Dateien, Datenströme, Byte-Arrays und System.Drawing.Image-Objekte. Bei Bildern, die von einem mobilen Client hochgeladen wurden, lesen Sie den Anfragestrom direkt:
using var stream = file.OpenReadStream();
var imageBytes = new byte[stream.Length];
await stream.ReadAsync(imageBytes);
var results = BarcodeReader.Read(imageBytes, options);Imports System.IO
Using stream = file.OpenReadStream()
Dim imageBytes = New Byte(stream.Length - 1) {}
Await stream.ReadAsync(imageBytes, 0, imageBytes.Length)
Dim results = BarcodeReader.Read(imageBytes, options)
End UsingProblem 3: Callback-basierte API vs. synchrones Ergebnis
barKoder SDK: BarkoderView.StartScanning(IBarkoderDelegate) verwendet ein Delegat- / Callback-Muster — DidFinishScanning(BarcodeResult[]) löst asynchron aus, wenn Barcodes im Kamerafeed erkannt werden.
Lösung: IronBarcode's BarcodeReader.Read() ist synchron und gibt ein IEnumerable<BarcodeResult> direkt zurück. In ASP.NET Core-Kontexten, in denen Asynchronität erforderlich ist, wickeln Sie es in Task.Run() ein:
var results = await Task.Run(() => BarcodeReader.Read(imageBytes, options));Dim results = Await Task.Run(Function() BarcodeReader.Read(imageBytes, options))Ausgabe 4: Konfiguration des Entschärfungsmodus
barKoder SDK: DeBlur ist in der BarkoderView Konfiguration aktiviert, bevor das Scannen beginnt, und gilt für alle nachfolgenden Scans.
Lösung: In IronBarcode ist das Äquivalent ReadingSpeed.ExtremeDetail pro Lesung über BarcodeReaderOptions gesetzt. Erstellen Sie das Optionsobjekt einmal und verwenden Sie es wieder:
var deepOptions = new BarcodeReaderOptions
{
Speed = ReadingSpeed.ExtremeDetail,
ExpectMultipleBarcodes = false,
};
// Reuse across multiple reads
var results = BarcodeReader.Read("image.png", deepOptions);Imports System
Dim deepOptions As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.ExtremeDetail,
.ExpectMultipleBarcodes = False
}
' Reuse across multiple reads
Dim results = BarcodeReader.Read("image.png", deepOptions)Problem 5: Fehlende Erzeugungskapazität
barKoder SDK: Barkoder ist schreibgeschützt. Es gibt keine API zur Generierung von Barcodes oder QR-Codes.
Lösung: IronBarcode deckt sowohl das Lesen als auch das Generieren ab. Verwenden Sie BarcodeWriter für Standardformate und QRCodeWriter für QR-Codes:
// Standard barcode generation
BarcodeWriter.CreateBarcode("SHIP-20240315-00428", BarcodeEncoding.Code128)
.SaveAsPng("shipping-label.png");
// QR code generation
QRCodeWriter.CreateQrCode("https://example.com/product/A42", 500)
.SaveAsPng("product-qr.png");
// Get as bytes for embedding in API response or PDF
byte[] barcodeBytes = BarcodeWriter.CreateBarcode("INV-100291", BarcodeEncoding.Code128)
.ToPngBinaryData();Imports System
' Standard barcode generation
BarcodeWriter.CreateBarcode("SHIP-20240315-00428", BarcodeEncoding.Code128) _
.SaveAsPng("shipping-label.png")
' QR code generation
QRCodeWriter.CreateQrCode("https://example.com/product/A42", 500) _
.SaveAsPng("product-qr.png")
' Get as bytes for embedding in API response or PDF
Dim barcodeBytes As Byte() = BarcodeWriter.CreateBarcode("INV-100291", BarcodeEncoding.Code128) _
.ToPngBinaryData()##barKoder SDKMigration Checklist
Vor der Migration anfallende Aufgaben
Überprüfen Sie Ihren Code für barKoder-Referenzen:
grep -r "Barkoder\|BarkoderView\|IBarkoderDelegate\|BarcodeResult" --include="*.cs" .
grep -r "Plugin.Maui.Barkoder\|Barkoder.Xamarin" --include="*.csproj" .
grep -r "Barkoder" --include="*.xaml" .
Dokumentieren Sie die aktuell implementierten oder geplanten Barcode-Szenarien:
- Welche Barcode-Formate müssen gelesen werden (Code128, DataMatrix, QR, PDF417 usw.)?
- Ob beschädigte Barcode-Wiederherstellung erforderlich ist (
ReadingSpeed.ExtremeDetail) - Ob Multi-Barcode-Erkennung erforderlich ist (
ExpectMultipleBarcodes = true) - Ob Barcode-Erstellung erforderlich ist (
BarcodeWriter,QRCodeWriter) - Ob PDF-Verarbeitung erforderlich ist (
BarcodeReader.Read("doc.pdf")) - Bereitstellungsziele (ASP.NET Core, Azure Functions, Docker, Lambda, Desktop, MAUI)
Aufgaben der Code-Aktualisierung
- Entfernen Sie
Plugin.Maui.BarkoderoderBarkoder.Xamarinaus.csproj, wo es nicht mehr benötigt wird - Installieren Sie das
BarCodeNuGet-Paket - Entfernen Sie
using Barkoder.Maui;(oder das entsprechende Xamarin), wo es nicht mehr benötigt wird - Fügen Sie
using IronBarCode;zu allen Barcode-Verarbeitungsdateien hinzu - Fügen Sie
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";beim Anwendungsstart hinzu - Ersetzen Sie
BarkoderView.StartScanning/DidFinishScanningRückrufe mitBarcodeReader.Read(filePath, options) - Zuordnung von
BarcodeResult.TextualDatazuresult.Value - Zuordnung von
BarcodeResult.BarcodeTypeNamezuresult.Format - Zuordnung der DeBlur-Konfiguration zu
Speed = ReadingSpeed.ExtremeDetailinBarcodeReaderOptions - Zuordnung der Multi-Scan-Konfiguration zu
ExpectMultipleBarcodes = trueinBarcodeReaderOptions - Fügen Sie
BarcodeWriter.CreateBarcode()Aufrufe für alle Erstellungserfordernisse hinzu - Fügen Sie
QRCodeWriter.CreateQrCode()Aufrufe für QR-Code-Erstellungserfordernisse hinzu - Ersetzen Sie jeglichen PDF-Vorverarbeitungscode mit
BarcodeReader.Read("document.pdf") - Wickeln Sie synchronisierte
BarcodeReader.Read()Aufrufe inTask.Run()für asynchrone ASP.NET Core-Endpunkte ein
Post-Migrationstests
Nach Abschluss der Code-Aktualisierungen überprüfen Sie bitte Folgendes:
- Bestätigen Sie, dass
BarcodeReader.Read()Ergebnisse für alle verwendeten Bildformate zurückgibt (PNG, JPEG, TIFF, BMP) - Verifizieren Sie, dass
ReadingSpeed.ExtremeDetailBarcodes von den qualitativ schwächsten Proben in Ihrem Testset wiederherstellt - Bestätigen Sie, dass
ExpectMultipleBarcodes = truedie richtige Anzahl von Barcodes aus Multi-Barcode-Dokumenten zurückgibt - PDF-Lesetest für alle in den Produktionsdokumenten-Workflows verwendeten PDF-Versionen
- Verifizieren Sie, dass
BarcodeWriter.CreateBarcode()Ausgabe durch Ihre Ziel-Scanner scannbar ist - Verifizieren Sie, dass
QRCodeWriter.CreateQrCode()Ausgabe durch mobile QR-Leser scannbar ist - Testen Sie den ASP.NET Core Endpunkt (falls zutreffend) mit Datei-Uploads von mobilen Clients.
- Korrekte Funktion in Docker-, Azure- oder Lambda-Bereitstellungszielen bestätigen
- Führen Sie gegebenenfalls End-to-End-Tests durch, die den gesamten Lese-, Verarbeitungs- und Generierungszyklus abdecken.
Wichtigste Vorteile der Migration zu IronBarcode
Eine Plattform, die Nicht-Kamera .NET umfasst: IronBarcode wird von NuGet installiert und läuft in jedem .NET-Projekt — ASP.NET Core, Azure Functions, Lambda, Docker, Konsole, Worker, WPF, WinForms, Avalonia, Blazor und MAUI gleichermaßen. Barkoder's Plugin.Maui.Barkoder deckt nur die Kamera-UI innerhalb eines MAUI-Mobile-App-Headers ab; IronBarcode deckt alles andere ab.
Schadenstolerantes Lesen ohne Kamera: Die Fähigkeiten, die Barkoder überzeugend machten — DeBlur, MatrixSight, Schadenswiederherstellung — sind in IronBarcode durch ReadingSpeed.ExtremeDetail und ML-basierte Bildvorverarbeitung vorhanden. Die gleichen Genauigkeitsverbesserungen, die Barkoder bei Live-Kameraeingaben erzielt, erzielt IronBarcode bei Dateien, gescannten Dokumenten und hochgeladenen Bildern.
Vollständiger Lese- und Generierungs-Workflow: Barkoder ist schreibgeschützt. IronBarcode deckt sowohl das Lesen als auch das Generieren von Barcodes in über 50 Formaten mit einem einzigen Paket ab. Teams, die Versandetiketten generieren, QR-Codes für Verpackungen erstellen oder Barcodes in Dokumente einbetten müssen, benötigen keine zweite Bibliothek.
Native PDF-Unterstützung: Das Lesen von Barcodes aus PDF-Dokumenten – Rechnungen, Frachtpapieren, Krankenakten, Konformitätsdokumenten – ist eine erstklassige Funktion von IronBarcode . Keine Zwischenspeicherung bei der Bildextraktion, keine API-Aufrufe pro Seite und keine zusätzlichen Abhängigkeiten. Ein mehrseitiges PDF wird in einem einzigen BarcodeReader.Read() Aufruf verarbeitet.
Vollständige serverseitige Bereitstellung: IronBarcode läuft in ASP.NET Core, Azure Functions, AWS Lambda, Docker-Containern und jeder anderen .NET Hostingumgebung. Es verarbeitet Barcodes lokal ohne Netzwerkaufrufe, ohne API-Schlüsselverwaltung und ohne Verzögerungen durch einen externen Dienst. Die Verarbeitung eines oder einer Million Barcodes kostet gleich viel – es fallen keine Gebühren pro Anfrage an.
Vorhersehbare, dauerhafte Preisgestaltung: IronBarcode ist als einmalige, unbefristete Lizenz ab 749 US-Dollar für einen einzelnen Entwickler erhältlich, ohne Gebühren pro Anfrage, ohne Volumenbeschränkungen und ohne Abonnementverlängerungen. Für Teams, die Produktionsanwendungen entwickeln, welche Barcodes in großem Umfang verarbeiten, ist das Kostenmodell einfach und vorhersehbar.

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.