Altbilgi içeriğine atla
VIDEOLAR

C#'ta Akışlardan Barkodları Nasıl Okursunuz

barKoder SDK'dan IronBarcode'a Geçiş

Barkoder, resmi .NET paketlerini — Plugin.Maui.Barkoder ve Barkoder.Xamarin — gemi ile gönderir, ancak her ikisi de kesinlikle mobil kamera tarama bileşenleridir. Eğer barKoder'i MatrixSight algoritması, DeBlur modu, çoklu-barkod algılama veya DPM desteği için değerlendirdiyseniz ve sonrasında dosya girişi, PDF işleme, sunucu tarafı dağıtım veya barkod oluşturma gerektiğini keşfettiyseniz, .NET'te barKoder'den bunların hiçbiri mevcut değildir. Bu kılavuz, IronBarcode'un her gereksinimi nasıl karşıladığını ve her senaryo için çalışan kod ile gösterir.

barKoder SDK'dan Neden Göç Etmeli

Bir barKoder değerlendirmesinden IronBarcode'a geçen ekipler aynı tetikleyicileri rapor eder:

Sadece Mobil Kamera Yüzeyi: Barkoder'in .NET izleri Plugin.Maui.Barkoder (v1.6.8, Mart 2026) ve Barkoder.Xamarin (v1.3.0) dir. Her ikisi de yerel iOS / Android SDK'larını sarar ve bir BarkoderView kamera kontrolü sunar. Genel amaçlı bir Barkoder.NET kütüphanesi yoktur, ASP.NET Core hedefi yoktur, konsol / işçi / masaüstü hedefi yoktur ve Linux sunucu hedefi yoktur.

Sadece-Okunur Mimari: Barkoder, yalnızca tarama için olan bir SDK'dır. Eğer uygulamanız barcode üretmesi gerekiyorsa — gönderim etiketleri yazdırma, paketin içine QR kodları oluşturma, belgelerde kodlar ekleme — Barkoder hiçbir şey sağlamaz. Proje ortasında bir üretim gereksinimi keşfeden ekipler, iş akışının her iki tarafını da kapsayan bir kütüphaneye ihtiyaç duyarlar.

PDF İşleme Yok: .NET kurumsal uygulamalarda barcodlar sıklıkla PDF belgelerde — faturalar, sevk irsaliyeleri, tıbbi belgeler, uyum belgeleri — görünür. Barkoder'in bu iş akışının bir konsepti yoktur. Bir mobil cihazda canlı kamera girişi için tasarlanmıştır ve bir PDF dosyasını işleyemez.

Sunucu-Taraf Deployment Yok: Barkoder'in işleme modeli cihaz üstünde mobil taramadır. ASP.NET Core, Azure Fonksiyonları, Docker konteynerları veya AWS Lambda'da çalışamaz. Sunucu taraf barcode API'leri, belge işleme hatları veya bulut fonksiyonları geliştiren ekiplerin Barkoder deployment için hiçbir yolu yoktur.

Dosya / Akış Girişi Yok: Bir MAUI uygulaması içinde bile, BarkoderView yalnızca canlı kamera karelerini tüketir. Dosya yolu, bayt dizisi veya Stream overloayoktur, bu yüzden yüklenen bir resmi veya galeri fotoğrafını işlemek farklı bir kütüphane gerektirir.

Temel Sınır

Barkoder'in MAUI yüzeyi kamera bağımlıdır. .NET geliştiricisi Plugin.Maui.Barkoder kullanarak bu şekilde bir kod yazar:

// 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}");
    }
}
// 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 Class
$vbLabelText   $csharpLabel

IronBarcode aynı veri için bir dosya / akış / PDF API'si sunar:

// 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}");
}
// 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}")
Next
$vbLabelText   $csharpLabel

IronBarcode vs barKoder SDK: Özellik Karşılaştırması

Özellik barKoder SDK IronBarcode
.NET / C# API MAUI / Xamarin kamera UI sadece Tam .NET yüzeyi
NuGet Paketi Plugin.Maui.Barkoder, Barkoder.Xamarin BarCode
Hasarlı Barkod Kurtarma MatrixSight / DeBlur ReadingSpeed.ExtremeDetail + ML
Çoklu Barkod Tespiti Evet ExpectMultipleBarcodes = true
DataMatrix / DPM Evet (yalnızca okuma) Evet — oku ve üret
QR Kodu Evet (yalnızca okuma) Evet — oku ve üret
PDF417 Evet Evet
Aztek Evet Evet
Code128, Code39, EAN Evet Evet — 50+ format
Barkod Üretimi None Tam — tüm formatlar
PDF İşleme None Yerel
Dosya / Akış / bayt[] Girdisi Yok — sadece kamera kareleri Evet
ASP.NET Core None Tam
Docker / Linux None Tam
Azure Fonksiyonları None Tam
AWS Lambda None Tam
Çevrimdışı / İzole (Air-Gapped) Cihaz üzerinde Tamamen yerel
Async / Await Geri çağrı tabanlı Tam
Bağımlılık Enjeksiyonu None Tam .NET DI
iOS, MAUI aracılığıyla Plugin.Maui.Barkoder (kamera UI) Programatik (dosya / akış)
Android, MAUI aracılığıyla Plugin.Maui.Barkoder (kamera UI) Programatik (dosya / akış)
Fiyatlandırma Yıllık abonelik $749'dan .oneqislmeşuhperüd

Hızlı Başlangıç: barKoder SDK'dan IronBarcode'a Göç

Adım 1: NuGet Paketini Değiştirin

IronBarcode'u kurun:

dotnet add package BarCode

Projeniz Plugin.Maui.Barkoder veya Barkoder.Xamarin yalnızca kamera dışı iş akışları için kullanıyorsa (veya tamamen dosya / PDF işlemeye geçiyorsanız), kaldırın:

dotnet remove package Plugin.Maui.Barkoder
dotnet remove package Plugin.Maui.Barkoder
SHELL

Uygulama hala canlı bir kamera UI'sına ihtiyaç duyuyorsa, Plugin.Maui.Barkoder saklayın ve dosya / PDF / oluşturma çalışması için IronBarcode ekleyin.

Adım 2: Ad Alanlarını Güncelleyin

barKoder isim alanını, artık gerek duyulmadığında kaldırın ve IronBarcode isim alanını ekleyin:

// Remove (if no longer needed)
// using Barkoder.Maui;

// Add
using IronBarCode;
// Remove (if no longer needed)
// using Barkoder.Maui;

// Add
using IronBarCode;
Imports IronBarCode
$vbLabelText   $csharpLabel

Adım 3: Lisansa İzin Verin

Lisans başlatmayı uygulama başlatmada ekleyin — ASP.NET Core için Program.cs içinde veya konsol veya masaüstü uygulamalarda herhangi bir barkod operasyonundan önce:

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
Imports IronBarCode

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Kod Göç Örnekleri

Görüntülerden Barcode Okuma

Ana okuma senaryosu barKoder'in canlı kamera karelerinden IronBarcode'un dosya / akış / bayt[] API'sine yönlendirilir.

barKoder MAUI Yaklaşımı:

// 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}");
        }
    }
}
// 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 Class
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

// 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}");
}
// 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}")
Next
$vbLabelText   $csharpLabel

IronBarcode'un BarcodeReader.Read() barkod formatını önceden belirtmeye gerek kalmadan otomatik olarak algılar. Aynı çağrı, mobil cihaz tarafından yakalanan ve bir sunucuya yüklenen görüntüler, bir dosya sisteminden yüklenen görüntüler veya bir akıştan alınan bayt dizileri olarak alınan görüntüler için çalışır. Kapsamlı okuma belgeleri için bkz. IronBarcode okuma kılavuzu.

Hasar Görmüş Barcode Kurtarma (DeBlur Modu Eşdeğeri)

Barkoder'in DeBlur modu, en çok alıntı yapılan yeteneklerinden biridir.IronBarcode dosya girişi için ReadingSpeed.ExtremeDetail ile eşdeğerini sunar.

barKoder MAUI Yaklaşımı:

// 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}");
}
// 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 Sub
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

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");
}
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 If
$vbLabelText   $csharpLabel

ReadingSpeed.ExtremeDetail, kodlamaya girişmeden önce kontrast artırma, keskinleştirme, dönme düzeltme ve hasar kurtarma uygulayarak, çok geçişli ML tabanlı bir görüntü analizi hattını çalıştırır. Toplu iş akışları için, varsayılan olarak ReadingSpeed.Balanced kullanın ve yalnızca Balanced kodu çözemezse görüntüler için ExtremeDetail kullanın.

Çoklu-Barcode Algılama

Barkoder'in çok barkodlu çerçeve taraması IronBarcode'un ExpectMultipleBarcodes seçeneğine eşleştirilir ve hem görüntülerde hem de PDF'lerde çalışır.

barKoder MAUI Yaklaşımı:

// 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}");
}
// 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 Sub
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

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}");
}
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}")
Next
$vbLabelText   $csharpLabel

Bu tek bir yöntem çağrısıdır. Sayfa çıkarma, çoklu istek yok, her barcode için işlem yükü yok. PDF yerel olarak okunur.

DataMatrix Üretimi ve Okuma

Barkoder, DataMatrix'i okur ancak üretemez.IronBarcode iş akışının her iki tarafını da kapsar ve bu, endüstriyel izleme sistemlerinde yaygın bir gereksinimdir.

barKoder MAUI Yaklaşımı:

// 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}");
}
// 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 Sub
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

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}");
}
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}")
Next
$vbLabelText   $csharpLabel

Desteklenen kodlama formatları ve üretim seçeneklerinin tam listesi için bkz. IronBarcode barcode oluşturma belgeleri.

Markalama ile QR Kod Oluşturma

Barkoder barcode üretmez. IronBarcode, pazarlama, ambalajlama ve ürün kimlik iş akışları için yaygın bir gereksinim olan gömülü logolarla QR kodları üretir.

barKoder MAUI Yaklaşımı:

Not available — Plugin.Maui.Barkoder is a reader-only SDK with no
generation API on any platform.

IronBarcode Yaklaşımı:

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");
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")
$vbLabelText   $csharpLabel

ASP.NET Core Barcode API Uç Noktası

Barkoder'in sunucu-taraf dağıtım modeli yoktur. Mobil tarama yükleme uç noktasının eşdeğeri — herhangi bir istemciden bir görüntüyü alıp barcode verileri döndüren — bir .NET Kütüphanesi gerektirir.

barKoder Yaklaşımı:

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 Yaklaşımı:

// 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(),
    }));
});
// 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)
$vbLabelText   $csharpLabel

barKoder SDK API'den IronBarcode Haritalama Referansı

Bu tablo, barKoder'in MAUI / Xamarin yüzeyini eşdeğer IronBarcode çağrısına haritalar:

barKoder API IronBarcode Eşdeğeri
Lisans barKoder portalı / konfigürasyonu üzerinden ayarlanıyor IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
BarkoderView üzerinde DeBlur yapılandırması Speed = ReadingSpeed.ExtremeDetail
BarkoderView üzerinde çoklu tarama yapılandırması ExpectMultipleBarcodes = true
SetEnabledBarcodeTypes(...) BarcodeEncoding.<Format> (okumada otomatik algılanır)
BarkoderView.StartScanning(IBarkoderDelegate) BarcodeReader.Read("image.png") — senkron
BarcodeResult.TextualData result.Value
BarcodeResult.BarcodeTypeName result.Format
MatrixSight hasar kurtarma ML ön işleme ile ReadingSpeed.ExtremeDetail
Canlı kamera kare girişi Dosya yolu / Stream / byte[] girdisi
Cihaz üzerinde işleme Tamamen yerel — ağ aramaları yok
Oluşturma desteği yok BarcodeWriter.CreateBarcode() / QRCodeWriter.CreateQrCode()
PDF desteği yok BarcodeReader.Read("document.pdf") — yerel
Sunucu dağıtımı yok ASP.NET Core, Docker, Azure Functions, Lambda'da çalışır
Sayfa dizini yok (N/A) result.PageNumber — PDF okumalarında mevcut

Yaygın Göç Sorunları ve Çözümleri

Sorun 1: NuGet Paket İsimleri

barKoder SDK: Resmi .NET paketleri Plugin.Maui.Barkoder ve Barkoder.Xamarin. Hiçbiri mobil olmayan senaryoları kapsamaz.

Çözüm: IronBarcode'u yükleyin:

dotnet add package BarCode

Plugin.Maui.Barkoder artık gerekliyse (tamamen dosya / PDF / sunucu işlemeye geçiyorsunuz), onu kaldırın:

dotnet remove package Plugin.Maui.Barkoder
dotnet add package BarCode
dotnet remove package Plugin.Maui.Barkoder
dotnet add package BarCode
SHELL

Sorun 2: Kamera Kare Girdisi vs Dosya Girdisi

barKoder SDK: Tüm girişler canlı bir kamera karesi olarak gelir — cihaz üstünde işlenen bir sürekli video akışı. Dosya yolu giriş modu yoktur.

Çözüm: IronBarcode, dosyaları, akışları, bayt dizilerini ve System.Drawing.Image nesnelerini kabul eder. Mobil istemciden yüklenen görüntüler için istekteki akışı doğrudan okuyun:

using var stream = file.OpenReadStream();
var imageBytes = new byte[stream.Length];
await stream.ReadAsync(imageBytes);
var results = BarcodeReader.Read(imageBytes, options);
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 Using
$vbLabelText   $csharpLabel

Sorun 3: Geri Arama Tabanlı API vs. Senkron Sonuç

barKoder SDK: BarkoderView.StartScanning(IBarkoderDelegate) delege / geri arama modeli kullanır — barkodlar kamera beslemesinde algılandığında DidFinishScanning(BarcodeResult[]) asenkron olarak ateşlenir.

Çözüm: IronBarcode'un BarcodeReader.Read() senkrondur ve bir IEnumerable<BarcodeResult> doğrudan döndürür. Async gerekli olan ASP.NET Core bağlamlarında, Task.Run() içine sarın:

var results = await Task.Run(() => BarcodeReader.Read(imageBytes, options));
var results = await Task.Run(() => BarcodeReader.Read(imageBytes, options));
Dim results = Await Task.Run(Function() BarcodeReader.Read(imageBytes, options))
$vbLabelText   $csharpLabel

Sorun 4: DeBlur Modu Konfigürasyonu

barKoder SDK: DeBlur, tarama başlamadan önce BarkoderView yapılandırmasında etkinleştirilir ve sonraki tüm taramalara uygulanır.

Çözüm: IronBarcode'da, eşdeğer her okuma için BarcodeReaderOptions aracılığıyla ayarlanır ve ReadingSpeed.ExtremeDetail ile eşdeğerdir. Seçenek objesini bir kez oluşturun ve yeniden kullanın:

var deepOptions = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.ExtremeDetail,
    ExpectMultipleBarcodes = false,
};

// Reuse across multiple reads
var results = BarcodeReader.Read("image.png", deepOptions);
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)
$vbLabelText   $csharpLabel

Sorun 5: Üretim Yeteneğinin Olmadığı

barKoder SDK: Barkoder yalnızca okumak içindir. Barcode veya QR kodlar oluşturmak için hiçbir API yoktur.

Çözüm:IronBarcode hem okuma hem de üretimi kapsar. Standart formatlar için BarcodeWriter ve QR kodları için QRCodeWriter kullanın:

// 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();
// 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()
$vbLabelText   $csharpLabel

barKoder SDK Göç Kontrol Listesi

Geçiş Öncesi Görevler

Kod tabanınızı barKoder referansları için denetleyin:

grep -r "Barkoder\|BarkoderView\|IBarkoderDelegate\|BarcodeResult" --include="*.cs" .
grep -r "Plugin.Maui.Barkoder\|Barkoder.Xamarin" --include="*.csproj" .
grep -r "Barkoder" --include="*.xaml" .
grep -r "Barkoder\|BarkoderView\|IBarkoderDelegate\|BarcodeResult" --include="*.cs" .
grep -r "Plugin.Maui.Barkoder\|Barkoder.Xamarin" --include="*.csproj" .
grep -r "Barkoder" --include="*.xaml" .
SHELL

Şu anda uygulanan veya planlanan barcode senaryolarını belgeleyin:

  • Hangi barcode formatlarının okunması gerekiyor (Code128, DataMatrix, QR, PDF417, vb.)
  • Hasarlı barkod kurtarmanın gerekli olup olmadığını (ReadingSpeed.ExtremeDetail)
  • Çoklu barkod algılamanın gerekli olup olmadığını (ExpectMultipleBarcodes = true)
  • Barkod üretiminin gerekli olup olmadığını (BarcodeWriter, QRCodeWriter)
  • PDF işlemenin gerekli olup olmadığını (BarcodeReader.Read("doc.pdf"))
  • Yayın hedefleri (ASP.NET Core, Azure Fonksiyonları, Docker, Lambda, masaüstü, MAUI)

Kod Güncelleme Görevleri

  1. Artık gerekli olmadığında Plugin.Maui.Barkoder veya Barkoder.Xamarin kaldırmak için .csproj içinden.
  2. BarCode NuGet paketini yükleyin
  3. Artık gerekmediğinde using Barkoder.Maui; (veya Xamarin eşdeğeri) kaldırın
  4. Tüm barkod işleme dosyalarına using IronBarCode; ekleyin
  5. Uygulama başlatımında IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"; ekleyin
  6. BarkoderView.StartScanning / DidFinishScanning geri çağırmaları BarcodeReader.Read(filePath, options) ile değiştirin
  7. BarcodeResult.TextualData 'yi result.Value ile eşleştirin
  8. BarcodeResult.BarcodeTypeName 'yi result.Format ile eşleştirin
  9. DeBlur yapılandırmasını Speed = ReadingSpeed.ExtremeDetail içinde BarcodeReaderOptions eşleştirin
  10. Çoklu tarama yapılandırmasını ExpectMultipleBarcodes = true içinde BarcodeReaderOptions eşleştirin
  11. Herhangi bir üretim gereksinimi için BarcodeWriter.CreateBarcode() çağrıları ekleyin
  12. QR kodu üretim gereksinimleri için QRCodeWriter.CreateQrCode() çağrıları ekleyin
  13. Herhangi bir PDF ön işleme kodunu BarcodeReader.Read("document.pdf") ile değiştirin
  14. Async ASP.NET Core uç noktaları için senkronize BarcodeReader.Read() çağrılarını Task.Run() içine sarın

Geçiş Sonrası Testler

Kod güncellemelerini tamamladıktan sonra, aşağıdakileri doğrulayın:

  • Kullanılan tüm resim formatları için BarcodeReader.Read() 'in sonuç döndürdüğünü onaylayın (PNG, JPEG, TIFF, BMP)
  • ReadingSpeed.ExtremeDetail 'in test setinizdeki en düşük kalite örneklerden barkodları kurtardığını doğrulayın
  • ExpectMultipleBarcodes = true 'in çok barkodlu belgelerden doğru barkod sayısını döndürdüğünü doğrulayın
  • Üretim belge iş akışlarında kullanılan tüm PDF sürümlerine karşı PDF okumasını test edin
  • BarcodeWriter.CreateBarcode() çıktısının hedef tarayıcılarınız tarafından taranabilir olduğunu doğrulayın
  • QRCodeWriter.CreateQrCode() çıktısının mobil QR okuyucular tarafından taranabilir olduğunu doğrulayın
  • ASP.NET Core uç noktası (uygulanabilir ise) ile mobil istemcilerden dosya yüklemeleri ile test edin
  • Docker, Azure veya Lambda dağıtım hedeflerinde doğru çalışmayı doğrulayın
  • Uygulama alanlarında tam okuma-işleme-üretme döngüsünü kapsayan uçtan uca testler çalıştırın

IronBarcode'a Geçmenin Temel Faydaları

Kamera Olmayan .NET'i Kapsayan Bir Platform: IronBarcode, NuGet'ten yüklenir ve herhangi bir .NET projesinde çalışır — ASP.NET Core, Azure İşlevleri, Lambda, Docker, konsol, işçi, WPF, WinForms, Avalonia, Blazor ve MAUI benzerleri. Barkoder'in Plugin.Maui.Barkoder yalnızca bir MAUI mobil uygulama başında kamera UI'sını kapsar;IronBarcode diğer her şeyi kapsar.

Kamerasız Hasara Dayanıklı Okuma: Barkoder'i çekici yapan özellikler — DeBlur, MatrixSight, hasar kurtarma — IronBarcode'da ReadingSpeed.ExtremeDetail ve ML tabanlı görüntü ön işleme aracılığıyla mevcuttur. Barkoder'in canlı kamera girişlerinde elde ettiği aynı doğruluk geliştirmelerini,IronBarcode dosyalar, taranmış belgeler ve yüklenen görüntülerde elde eder.

Tam Okuma ve Üretim İş Akışı: Barkoder sadece okuma yapar. IronBarcode, tek bir paketle 50'den fazla formatta hem barkod okuma hem de üretim yapar. Kargo etiketleri üretmesi, ambalaj için QR kodları oluşturması veya belgelerde barkod yerleştirmesi gereken ekipler ikinci bir kütüphaneye ihtiyaç duymaz.

Yerel PDF Desteği: PDF belgelerinden — faturalar, çizelgeler, tıbbi kayıtlar, uyum belgeleri — barkod okuma, IronBarcode'un birinci sınıf bir yeteneğidir. Ara görüntü çıkarma yok, sayfa başına API çağrısı yok ve ek bağımlılıklar yok. Çok sayfalı bir PDF, tek bir BarcodeReader.Read() çağrısında işlenir.

Tam Sunucu Tarafı Dağıtım: IronBarcode, ASP.NET Core, Azure Functions, AWS Lambda, Docker konteynerleri ve diğer tüm .NET barındırma ortamlarında çalışır. Barkodları yerel olarak işler, ağ çağrısı yapmaz, API anahtarlarını yönetmez ve uzak bir servisin ek gecikmesi olmaz. Bir barkod ya da bir milyon barkod işlemek aynı maliyettedir — istek başına ücret yoktur.

Öngörülebilir Sürekli Fiyatlandırma: IronBarcode, tek seferlik sürekli bir lisansla, tek bir geliştirici için 749$'dan başlayan fiyatlarla mevcuttur ve istek başına ücretlendirme, hacim sınırları veya abonelik yenilemeleri yoktur. Üretim uygulamaları geliştiren ve ölçekli barkod işleme yapan ekipler için maliyet modeli basit ve öngörülebilirdir.

Sıkça Sorulan Sorular

Barkoder SDK'dan IronBarcode'a neden geçmeliyim?

Yaygın nedenler arasında lisanslamanın basitleştirilmesi (SDK + runtime anahtar karmaşıklığının kaldırılması), veri geçiş limitlerinin ortadan kaldırılması, yerel PDF desteği kazanılması, Docker/CI/CD dağıtımının iyileştirilmesi ve üretim kodunda API tekrarlama azalması yer alır.

Barkoder API çağrılarını IronBarcode ile nasıl değiştiririm?

Örnek oluşturma ve lisanslama tekrarlamalarını IronBarCode.License.LicenseKey = "anahtar" ile değiştirin. Okuyucu çağrılarını BarcodeReader.Read(yol) ile ve yazıcı çağrılarını BarcodeWriter.CreateBarcode(veri, kodlama) ile değiştirin. Statik yöntemler örnek yönetimi gerektirmez.

Barkoder SDK'dan IronBarcode'a geçişte ne kadar kod değişir?

Çoğu geçiş daha az kod satırıyla sonuçlanır. Lisanslama tekrarlamaları, örnek oluşturucular ve açık format yapılandırması kaldırılır. Temel okuma/yazma işlemleri, daha temiz sonuç nesneleriyle daha kısa IronBarcode eşdeğerlerine dönüştürülür.

Geçiş sırasında hem Barkoder SDK hem de IronBarcode kurulu kalmalı mı?

Hayır. Çoğu geçiş doğrudan değişim yapılır, paralel bir işletim yerine geçer. Bir hizmet sınıfını bir seferde geçirin, NuGet referansını değiştirin ve sonraki sınıfa geçmeden önce başlatma ve API çağrı desenlerini güncelleyin.

IronBarcode için NuGet paketi adı nedir?

Paket 'IronBarCode' (büyük B ve C harfleriyle). 'Install-Package IronBarCode' veya 'dotnet add package IronBarCode' ile kurun. Kodda kullanılan yönerge 'using IronBarCode;' şeklindedir.

IronBarcode, Barkoder SDK ile karşılaştırıldığında Docker dağıtımını nasıl basitleştirir?

IronBarcode, harici SDK dosyaları veya montajlı lisans yapılandırması olmayan bir NuGet paketidir. Docker'da, IRONBARCODE_LICENSE_KEY ortam değişkenini ayarlayın ve paket lisans doğrulamasını başlangıçta kendi kendine yapar.

IronBarcode, Barkoder'den geçişten sonra tüm barkod formatlarını otomatik olarak algılıyor mu?

Evet. IronBarcode, desteklenen tüm formatlardaki sembolojiyi otomatik olarak algılar. Açık BarcodeTypes sayımı gerekli değildir. Format zaten biliniyorsa ve performans önemliyse, BarcodeReaderOptions arama alanını optimize etmek için sınırlamayı sağlar.

IronBarcode, ayrı bir kütüphane olmadan PDF'lerden barkod okuyabiliyor mu?

Evet. BarcodeReader.Read("document.pdf") PDF dosyalarını yerel olarak işlemler. Sonuçlar her barkod için SayfaNumarası, Format, Değer ve Güven içerir. Harici bir PDF render adımı gerekmez.

IronBarcode, paralel barkod işlemeyi nasıl yönetiyor?

IronBarcode'un statik yöntemleri durumsuz ve thread-safe'dir. Dağıtılmış dosya listeleri üzerinde per-thread örnek yönetimi olmadan doğrudan Parallel.ForEach kullanın. BarcodeReaderOptions.MaxParallelThreads, iç thread bütçesini kontrol eder.

Barkoder SDK'dan IronBarcode'a geçişte hangi sonuç özellikleri değişir?

Yaygın yeniden adlandırmalar: BarcodeValue, Value olur; BarcodeType, Format olur. IronBarcode sonuçları ayrıca Güven ve SayfaNumarası ekler. Çözüm çapında arama-değiştirme, mevcut sonuç işleme kodundaki yeniden adlandırmaları ele alır.

Bir CI/CD hattında IronBarcode lisanslamasını nasıl ayarlayabilirim?

IRONBARCODE_LICENSE_KEY'i bir boru hattı sırrı olarak saklayın ve uygulama başlangıç kodunda IronBarCode.License.LicenseKey olarak atayın. Bir sır, geliştirme, test, aşama ve üretim dahil olmak üzere tüm ortamları kapsar.

IronBarcode, özel biçimlendirmeye sahip QR kodu üretimini destekliyor mu?

Evet. QRCodeWriter.CreateQrCode() özelleştirilmiş renkler için ChangeBarCodeColor(), logo yerleştirme için AddBrandLogo(), yapılandırılabilir hata düzeltme seviyeleri ve PNG, JPG, PDF ve akış dahil birden çok çıktı formatını destekler.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara