IRONSOFTWAREHOME
影片

從barKoder SDK遷移到IronBarcode

Curtis Chau
Curtis Chau
Updated: 2026年6月20日

Barkoder提供官方的.NET套件 — Barkoder.Xamarin — 但兩者都僅是移動相機掃描元件。 如果您評估了barKoder的MatrixSight算法、DeBlur模式、多條碼檢測或DPM支持,然後發現您需要文件輸入、PDF處理、伺服器部署或條碼生成,這些在.NET上的barKoder中都不可用。 本指南展示了IronBarcode如何滿足每項需求,並對每種情況提供有效的程式碼。

為何從barKoder SDK遷移

從barKoder評估轉向IronBarcode的團隊一致報告了相同的觸發因素:

**僅限移動相機介面:**Barkoder的.NET覆蓋範圍是Plugin.Maui.Barkoder(v1.6.8, 2026年3月)和Barkoder.Xamarin(v1.3.0)。 這兩者都包裝了本機iOS / Android SDK並暴露了一個BarkoderView相機控制。 沒有一般用途的Barkoder.NET庫,沒有ASP.NET Core目標,沒有控制台/工作器/桌面目標,沒有Linux伺服器目標。

**僅限讀取架構:**Barkoder是僅限掃描的SDK。 如果您的應用程式需要生成條碼——列印運輸標籤,為包裝建立QR碼,在文件中嵌入程式碼——Barkoder不提供任何支持。 發現項目中期需要生成功能的團隊需要一個涵蓋工作流程兩方面的程式庫。

**無PDF處理:**在.NET企業應用程式中,條碼經常出現在PDF文件中——發票,運輸清單,醫療記錄,合規文件。 Barkoder無法理解這個工作流程。 它為活相機輸入設計,無法處理PDF文件。

**無伺服器端部署:**Barkoder的處理模式是在裝置上的移動掃描。 它不能在ASP.NET Core、Azure Functions、Docker容器或AWS Lambda中運行。 建立伺服器端條碼API、文件處理流程或雲端功能的團隊無法使用Barkoder部署。

**無文件/流輸入:**即使在MAUI應用中,BarkoderView也僅消耗即時相機畫面。 沒有文件路徑、字節陣列或Stream重載,因此處理上傳的圖像或畫廊照片需要不同的程式庫。

基本邊界

Barkoder的MAUI表面是相機綁定的。 使用Plugin.Maui.Barkoder的.NET開發人員撰寫的程式碼如下所示:

// 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}");
    }
}

IronBarcode為相同資料提供文件/流/PDF API:

// 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}");
}

##IronBarcodevs barKoder SDK: 功能比較

功能barKoder SDKIronBarcode
.NET / C# API僅限MAUI / Xamarin相機UI完整的.NET表面
NuGet套件Plugin.Maui.Barkoder, Barkoder.XamarinBarCode
損壞的條碼恢復MatrixSight / DeBlurReadingSpeed.ExtremeDetail + 機器學習
多條碼檢測ExpectMultipleBarcodes = true
DataMatrix / DPM是的(僅限讀取)是的 — 讀取和生成
QR Code是的(僅限讀取)是的 — 讀取和生成
PDF417
Aztec
Code128, Code39, EAN是的 — 50 多種格式
條碼生成None完整 — 所有格式
PDF處理None本地
文件/流/字節陣列輸入無——僅相機畫面
ASP.NET CoreNone全面
Docker / LinuxNone全面
Azure FunctionsNone全面
AWS LambdaNone全面
離線/氣隙在裝置上完全本地
異步/等待基於回調全面
依賴注入None完整的.NET依賴注入
通過MAUI的iOSPlugin.Maui.Barkoder(相機UI)程式化的(文件/流)
通過MAUI的AndroidPlugin.Maui.Barkoder(相機UI)程式化的(文件/流)
定價年度訂閱從$999永久

快速入門:barKoder SDK到IronBarcode遷移

步驟 1:替換 NuGet 包

安裝IronBarcode:

dotnet add package BarCode

如果您的項目使用Barkoder.Xamarin僅用於非相機工作流程(或者您完全轉向文件/PDF處理),請移除它:

dotnet remove package Plugin.Maui.Barkoder
SHELL

如果該應用仍需即時相機UI,保留Plugin.Maui.Barkoder並將IronBarcode新增到其旁邊以進行文件/PDF/生成工作。

步驟 2:更新命名空間

在不再需要的地方移除barKoder名稱空間,並新增IronBarcode名稱空間:

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

// Add
using IronBarCode;

步驟 3:初始化授權

在應用程式啟動時新增授權初始化——在ASP.NET Core的Program.cs中,或在控制台或桌面應用程式中進行任何條碼操作之前:

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

程式碼遷移範例

從圖像中讀取條碼

核心讀取方案從barKoder的即時相機畫面映射到IronBarcode的文件/流/字節陣列API。

barKoder MAUI方法:

// 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}");
        }
    }
}

IronBarcode 方法:

// 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}");
}

IronBarcode的BarcodeReader.Read()可以自動檢測條碼格式,不需要提前指定格式。 同一個調用適用於由移動裝置拍攝並上傳到伺服器的圖像、從文件系統載入的圖像或作為字節陣列從流接收的圖像。 有關全面的閱讀文件,請參閱IronBarcode讀取指南

損壞條碼恢復(等效於DeBlur模式)

Barkoder 的 DeBlur 模式是其最常被引用的功能之一。IronBarcode通過 ReadingSpeed.ExtremeDetail 爲文件輸入提供了等效功能。

barKoder MAUI方法:

// 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}");
}

IronBarcode 方法:

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");
}

ReadingSpeed.ExtremeDetail 運行多通道的機器學習圖像分析流程,應用對比度增強、銳化、旋轉校正和損壞恢復後才嘗試解碼。 對於批量工作流程,使用Balanced

多條碼檢測

Barkoder的多條碼畫面掃描映射到IronBarcode的ExpectMultipleBarcodes選項,該選項在圖像和PDF上都有效。

barKoder MAUI方法:

// 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}");
}

IronBarcode 方法:

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}");
}

這是一個單一的方法調用。 沒有頁面提取,沒有多個請求,也沒有每條碼處理的額外開銷。 PDF是本地讀取的。

DataMatrix生成和讀取

Barkoder可以讀取DataMatrix但無法生成它。 IronBarcode涵蓋了工作流程的兩個方面,這是工業跟蹤系統中的常見需求。

barKoder MAUI方法:

// 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}");
}

IronBarcode 方法:

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}");
}

有關支持的編碼格式和生成選項的完整列表,請參閱IronBarcode條碼生成文件

具有品牌的QR碼生成

Barkoder不生成條碼。 IronBarcode生成嵌入品牌標志的QR碼,這是營銷、包裝和產品識別工作流程中的常見需求。

barKoder MAUI方法:

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

IronBarcode 方法:

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");

ASP.NET Core條碼API端點

Barkoder沒有伺服器端部署模型。 相機掃描上傳端點的等效——接收來自任何客戶端的圖像並返回條碼資料——需要一個.NET程式庫。

barKoder方法:

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.
Text

IronBarcode 方法:

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

barKoder SDK API到IronBarcode映射引用

此表將barKoder的MAUI / Xamarin表面映射到等效的IronBarcode調用:

barKoder APIIronBarcode等效
通過barKoder門戶 / 配置設置授權IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
BarkoderView上的DeBlur配置Speed = ReadingSpeed.ExtremeDetail
BarkoderView上的多掃描配置ExpectMultipleBarcodes = true
SetEnabledBarcodeTypes(...)BarcodeEncoding.<Format>(讀取時自動檢測)
BarkoderView.StartScanning(IBarkoderDelegate)BarcodeReader.Read("image.png") — 同步
BarcodeResult.TextualDataresult.Value
BarcodeResult.BarcodeTypeNameresult.Format
MatrixSight損壞恢復ReadingSpeed.ExtremeDetail與機器學習預處理
即時相機畫面輸入文件路徑 / Stream / byte[]輸入
在裝置上處理完全本地——無網路請求
無生成支持BarcodeWriter.CreateBarcode() / QRCodeWriter.CreateQrCode()
無PDF支援BarcodeReader.Read("document.pdf") — 原生
無伺服器部署可在ASP.NET Core、Docker、Azure Functions、Lambda中使用
無頁面索引(不適用)result.PageNumber — 可用於PDF讀取

常見遷移問題及解決方案

問題1:NuGet套件名稱

**barKoder SDK:**官方的.NET套件是Barkoder.Xamarin。 兩者都不涵蓋非移動場景。

**解決方案:**請安裝IronBarcode:

dotnet add package BarCode

如果Plugin.Maui.Barkoder不再需要(您完全改為文件/PDF/伺服器處理),請移除它:

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

問題2:相機畫面輸入vs文件輸入

**barKoder SDK:**所有輸入以即時相機畫面的方式到達——一個在裝置上處理的連續影片流。沒有文件路徑輸入模式。

**解決方案:**IronBarcode接受文件、流、字節陣列以及System.Drawing.Image物件。 對於從移動客戶端上傳的圖像,直接讀取請求流:

using var stream = file.OpenReadStream();
var imageBytes = new byte[stream.Length];
await stream.ReadAsync(imageBytes);
var results = BarcodeReader.Read(imageBytes, options);

問題3:基於回調的API vs同步結果

barKoder SDK:DidFinishScanning(BarcodeResult[]) 當條碼在相機流中被檢測到是異步觸發的。

**解決方案:**IronBarcode的IEnumerable<BarcodeResult>。 在需要異步的ASP.NET Core環境中,包裝在Task.Run()中:

var results = await Task.Run(() => BarcodeReader.Read(imageBytes, options));

問題4:DeBlur模式配置

**barKoder SDK:**在掃描開始前在BarkoderView配置上啟用DeBlur並適用於所有後續掃描。

**解決方案:**在IronBarcode中,等效的是在BarcodeReaderOptions每次讀取。 建立一次選項物件並重複使用:

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

// Reuse across multiple reads
var results = BarcodeReader.Read("image.png", deepOptions);

問題5:缺少生成能力

**barKoder SDK:**Barkoder僅限讀取。 沒有生成條碼或QR碼的API。

**解決方案:**IronBarcode涵蓋了讀取和生成。 使用QRCodeWriter用於QR碼:

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

barKoder SDK遷移清單

遷移前任務

審核您的程式碼庫中barKoder的引用:

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

記錄當前實施或計劃中的條碼場景:

  • 哪些條碼格式需要讀取(Code128,DataMatrix,QR,PDF417等)
  • 是否需要損壞的條碼恢復(ReadingSpeed.ExtremeDetail
  • 是否需要多條碼檢測(ExpectMultipleBarcodes = true
  • 是否需要條碼生成(BarcodeWriter, QRCodeWriter
  • 是否需要PDF處理(BarcodeReader.Read("doc.pdf")
  • 部署目標(ASP.NET Core,Azure Functions,Docker,Lambda,桌面,MAUI)

程式碼更新任務

  1. Barkoder.Xamarin
  2. 安裝BarCode NuGet套件
  3. 移除不再需要的using Barkoder.Maui;(或相關的Xamarin等效)
  4. 向所有條碼處理文件新增using IronBarCode;
  5. 在應用程式啟動時新增IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
  6. BarkoderView.StartScanning / DidFinishScanning回調
  7. result.Value
  8. result.Format
  9. 將DeBlur配置映射到BarcodeReaderOptions
  10. 將多掃描配置映射到BarcodeReaderOptions
  11. 為任何生成需求新增BarcodeWriter.CreateBarcode()調用
  12. 為QR程式碼生成需求新增QRCodeWriter.CreateQrCode()調用
  13. BarcodeReader.Read("document.pdf")替換任何PDF預處理程式碼
  14. 為Async ASP.NET Core端點將同步Task.Run()

遷移後測試

完成程式碼更新後,請驗證以下內容:

  • 確認BarcodeReader.Read()返回所有使用的圖像格式的結果(PNG,JPEG,TIFF,BMP)
  • 驗證ReadingSpeed.ExtremeDetail可以從測試集中的最低質量樣本中恢復條碼
  • 確認ExpectMultipleBarcodes = true從多條碼文件中返回正確的條碼數
  • 測試PDF讀取與生產文件工作流中使用的所有PDF版本
  • 驗證BarcodeWriter.CreateBarcode()輸出可被您的目標掃描器掃描
  • 驗證QRCodeWriter.CreateQrCode()輸出可被移動QR讀碼器掃描
  • 使用來自移動客戶端的文件上傳測試ASP.NET Core端點(如果適用)
  • 確認在Docker、Azure或Lambda部署目標中的正確運行
  • 運行端到端測試涵蓋完整的讀取-處理-生成迴圈(如適用)

遷移到IronBarcode的主要優勢

**涵蓋非相機.NET的平台:**IronBarcode從NuGet安裝並運行在任何.NET項目中——ASP.NET Core,Azure Functions,Lambda,Docker,控制台,工作器,WPF,WinForms,Avalonia,Blazor和MAUI。Barkoder的Plugin.Maui.Barkoder僅限於移動應用程式主題中的相機UI; IronBarcode涵蓋了其他所有。

**無需相機的耐損讀取:**使Barkoder令人信服的能力——DeBlur,MatrixSight,損壞恢復——在IronBarcode中通過ReadingSpeed.ExtremeDetail和ML基於圖像預處理中存在。 Barkoder在及時相機輸入上取得的相同精度提升,IronBarcode在文件、掃描文件和上傳圖片上取得。

**完整讀取和生成工作流程:**Barkoder僅限讀取。 IronBarcode涵蓋了從一個包中超過50種格式的條碼讀取和生成。 需要生成運輸標籤、建立包裝QR碼或在文件中嵌入條碼的團隊不需要第二個程式庫。

**本機PDF支持:**從PDF文件中讀取條碼——發票、報關單、醫療記錄、合規文件——是IronBarcode的一流功能。 無需中間圖像提取,無需每頁API調用,無需額外依賴。 多頁PDF在一個BarcodeReader.Read()調用中處理。

**完整的伺服器側部署:**IronBarcode運行在ASP.NET Core,Azure Functions,AWS Lambda,Docker容器以及其他任何.NET托管環境中。 它在本地處理條碼,無需網路調用,無需管理API金鑰,無需遠程服務增加的延遲。處理一個條碼或一百萬個條碼成本相同——無每次請求收費。

**可預測的永久定價:**IronBarcode以一次性永久授權形式提供,單個開發者起價$999,不收取每次請求費用,無量限制,無需訂閱續費。 對於建立生產應用程式將以規模處理條碼的團隊,成本模型簡單且可預測。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
預訂您的免費即時演示
Booking Badge

全球數百萬工程師信賴

Iron Software的客戶標誌
獲取您的無義務諮詢
完成下方表單或發送電子郵件至sales@ironsoftware.com
您的詳細資訊將始終保密。
全球數百萬工程師信賴
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立