如何從System.Drawing對象中讀取條碼

How to Read Barcodes From System.Drawing Objects

This article was translated from English: Does it need improvement?
Translated
View the article in English

System.Drawing 物件常被開發人員用於 .NET 中與影像處理相關的任務。 然而,Microsoft 已經在其他作業系統上停止支援 System.Drawing,例如MacOSLinux,現在只支援Windows。 這一重大改變使得在非 Windows 作業系統上使用 IronBarcode 的開發人員遇到了多個問題。 這是因為處理條碼通常涉及使用如圖形影像字體等物件。

為了解決這個問題,我們引入了一個替代解決方案:IronDrawing。 這個由 IronSoftware 啟動的免費開源的程式庫,旨在簡化使其在非 Windows 作業系統上運行的過程。 這為我們的使用者提供了一個友好的使用體驗。 當您從 NuGet 安裝 IronBarcode 時,IronDrawing 將自動包含在您的項目中。

快速入門:使用 AnyBitmap 在一條簡單的線中讀取條碼

此代碼片段展示了 IronBarcode 如何輕鬆地透過創建 System.Drawing.Bitmap 並讓 IronDrawing 將其隱式轉換為 AnyBitmap。只需一行代碼,任何作業系統上的開發人員都能快速且簡單地獲得結果。

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronBarcode with NuGet Package Manager

    PM > Install-Package BarCode

  2. Copy and run this code snippet.

    var results = IronBarCode.BarcodeReader.Read((AnyBitmap)(new System.Drawing.Bitmap("yourImage.png")));
  3. Deploy to test on your live environment

    Start using IronBarcode in your project today with a free trial
    arrow pointer
class="hsg-featured-snippet">

最小工作流程(5 步)

  1. 下載 C# 函式庫以從 System.Drawing 讀取條碼
  2. 利用 IronDrawing 將 System.Drawing 物件轉換為 AnyBitmap
  3. 使用Read方法從 AnyBitmap 物件讀取條碼
  4. 在控制台上顯示檢測到的條碼值
  5. 探索另一篇文章以了解如何使用 IronDrawing 處理顏色和字體

將 System.Drawing 轉換為 AnyBitmap

System.Drawing讀取條碼只需將物件轉換為 AnyBitmap。IronDrawing 的設計考慮到了使用的簡便性。 因此,IronDrawing 支援將System.Drawing影像物件隱式轉換為名為AnyBitmapIronSoftware.Drawing影像物件。

除了System.Drawing物件之外,我們還支援從其他類型的物件進行轉換,包括:

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

用戶可以參考以下代碼範例以進行上方物件的轉換。 下面是一個代碼片段,展示了如何將條碼的影像從System.Drawing objects轉換為IronSoftware.Drawing.AnyBitmap。 這是一個簡單的範例:

: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

從上述代碼片段中,我們載入了兩幅條碼影像作為System.Drawing.BitmapSystem.Drawing.Image。 然後我們僅透過將它們賦值給 AnyBitmap 物件,將它們隱式轉換為AnyBitmap。 隨後,我們將這些物件添加到一個AnyBitmap清單中。

從 AnyBitmap 讀取條碼

IronBarcode 在其所有方法中均能輕鬆接受IronSoftware.Drawing.AnyBitmap物件,無需額外配置。 這為使用 IronBarcode 且在其他作業系統上不支援System.Drawing物件的開發人員提供了方便。 下面的代碼片段展示了如何進行這樣的操作。

: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

上面的代碼片段是之前代碼片段的擴展。 一旦我們填充了 AnyBitmap 清單,就能逐一遍歷清單並在每個 AnyBitmap 物件上呼叫Read方法作為參數,然後返回IronBarcode.BarcodeResults。 然後,我們遍歷返回的物件以將條碼值打印到控制台。

IronSoftware.Drawing中的功能區域不僅僅限於影像的轉換。 它還被大量用於其他影像處理方面,如顏色字體,它們在樣式化條碼和 QR 碼方面很有用。 用戶可以探索我們如何利用 IronDrawing 自訂和添加徽標到 QR 碼

常見問題解答

我如何在 .NET C# 中從 System.Drawing 對象中讀取條碼?

您可以通過將 IronBarcode 與 IronDrawing 結合使用來從 System.Drawing 對象中讀取條碼。首先使用 IronDrawing 將 System.Drawing 對象轉換為 AnyBitmap,然後使用 IronBarcode 的 Read 方法來讀取條碼。

什麼是 IronDrawing,它如何幫助條碼讀取?

IronDrawing 是由 IronSoftware 提供的免費開源庫,允許將 System.Drawing 對象隱式轉換為 AnyBitmap。通過使這些對象與 IronBarcode 兼容,促進了在非 Windows 操作系統上的條碼讀取。

我能在 MacOS 和 Linux 上使用 IronBarcode 來讀取條碼嗎?

是的,通過使用 IronDrawing,您可以將 System.Drawing 對象轉化為 AnyBitmap,這使得 IronBarcode 能夠在 MacOS 和 Linux 上讀取條碼,克服 System.Drawing 僅支持 Windows 的限制。

哪些圖像對象類型可以轉換為 AnyBitmap 用於條碼讀取?

除了 System.Drawing 對象之外,您還可以將 System.Drawing.Bitmap、System.Drawing.Image、SkiaSharp.SKBitmap、SkiaSharp.SKImage 和 SixLabors.ImageSharp 對象轉換為 AnyBitmap,以便使用 IronBarcode 進行條碼讀取。

我如何使用 IronBarcode 顯示檢測到的條碼值?

在使用 IronBarcode 的 Read 方法讀取條碼後,遍歷 BarcodeResult 數組並將每個條碼值打印到控制台。

安裝條碼讀取庫時,是否會包含 IronDrawing?

是的,當您從 NuGet 安裝 IronBarcode 時,IronDrawing 會自動包含到您的項目中,提供條碼讀取的無縫集成。

圖像對象的隱式轉換如何幫助條碼處理?

使用 IronDrawing 將圖像對象隱式轉換為 AnyBitmap 簡化了使 System.Drawing 對象與 IronBarcode 兼容的過程,從而增強了各種操作系統上的條碼處理。

Hairil Hasyimi Bin Omar
軟體工程師
和所有优秀的工程师一样,Hairil 是个努力学习者。他正在细化自己的 C# 、Python 和 Java 知识,将这些知识应用于 Iron Software 各个团队成员以增加价值。Hairil 自马来西亚 Universiti Teknologi MARA 加入 Iron Software 团队,并以化学与工艺工程学士学位毕业。
準備好開始了嗎?
Nuget 下載 1,935,276 | 版本: 2025.11 剛剛發布