如何從流中讀取條碼C#

如何使用 C# 從串流中讀取條碼

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

<! -- 引言實作示意圖 --> <!--說明:說明程式碼概念的圖表或截圖 -->

IronBarcode 可直接從 .NET 應用程式中的 MemoryStream 物件讀取條碼,而無需先將流儲存至磁碟。這使得從存儲在記憶體中的圖像和 PDF 文件流中高效地處理條碼成為可能。

MemoryStream 是一個 .NET Framework 類別,可從記憶體儲存的串流讀取或寫入。 它處理資料時不需要實體檔案,而是將資料儲存在記憶體中。 此方法適用於 Web 應用程式、API 或以位元組陣列接收條碼資料或需要在不建立臨時檔案的情況下處理影像的場景。

除了從影像檔案PDF檔案讀取條碼外,IronBarcode 也能從串流中讀取條碼。 該函式庫接受 PDF 文件或影像流作為輸入,並輸出 BarCode 讀取結果。 此功能適合處理資料庫、Web 上傳或記憶體快取內容的資料。

快速入門:直接從影像流讀取 BarCode

使用 IronBarcode 的兩行程式碼即可從任何影像流中讀取條碼 - 無需寫入磁碟。 本範例示範在 .NET 中基於流的 BarCode 讀取。

Nuget Icon立即開始使用 NuGet 建立 PDF 檔案:

  1. 使用 NuGet 套件管理器安裝 IronBarcode

    PM > Install-Package BarCode

  2. 複製並運行這段程式碼。

    var result = IronBarCode.BarcodeReader.Read(myImageStream);
    Console.WriteLine(result[0].Text);
  3. 部署到您的生產環境進行測試

    立即開始在您的專案中使用 IronBarcode,免費試用!
    arrow pointer

如何從影像流中讀取 BarCode? <!--說明:說明程式碼概念的圖表或截圖 -->

為何使用記憶體串流而非檔案? 記憶體串流比起以檔案為基礎的作業具有多項優點。 它們可消除磁碟 I/O 開銷,使應用程式更快速。 由於敏感的 BarCode 資料從未接觸磁碟,因此可提高安全性。 它們也適合磁碟存取有限或昂貴的雲端環境。結合 IronBarcode 的 [async 和多執行緒功能](https://ironsoftware.com/csharp/barcode/how-to/async-multithread/),您可以同時處理多個串流,以獲得最高效能。 本節說明如何使用 IronBarcode 讀取一個影像串流以及儲存於 `List` 中的多個影像串流。 以下程式碼包含註解以說明過程:

支援哪些類型的影像格式? IronBarcode 從串流讀取時支援多種影像格式:JPEG、PNG、GIF、TIFF、BMP 和 SVG。 這種靈活性讓處理 BarCode 影像不受源格式的限制。 為達到最佳效果,請使用 [ BarCode 閱讀器設定](https://ironsoftware.com/csharp/barcode/examples/barcode-reader-settings-csharp/) 來微調閱讀過程。 ```csharp using IronBarCode; using System; using System.Collections.Generic; using System.IO; class BarcodeFromImageStream { static void Main(string[] args) { // Create a list of MemoryStreams to store image streams List imageStreams = new List { // Example of adding an existing MemoryStream object to the list new MemoryStream(File.ReadAllBytes("example1.png")), new MemoryStream(File.ReadAllBytes("example2.png")) }; :path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-streams-1.cs ```

如何處理多個影像串流? 上面的程式碼顯示 IronBarcode 在 `BarcodeReader.Read()` 方法中接受單一 `MemoryStream` 物件或 `MemoryStream` 物件清單。 本範例將圖像檔案轉換為 `MemoryStream` 物件,並直接從串流讀取條碼。 在處理多個碼流時,IronBarcode 會有效地使用其[讀取速度選項](https://ironsoftware.com/csharp/barcode/how-to/reading-speed-options/)。 根據您的需求調整閱讀速度 - 是否需要最高的精確度或最快的處理時間。對於[從單一資料流中讀取多個條碼](https://ironsoftware.com/csharp/barcode/how-to/read-multiple-barcodes/),IronBarcode 會自動檢測並返回所有找到的條碼。 若要在串流中使用不完美或低品質的影像以提高精確度,請在處理前套用 [影像修正篩選器](https://ironsoftware.com/csharp/barcode/how-to/image-correction/)。 這可大幅提高 BarCode 的辨識率。

如何從 PDF 文件流中讀取 BarCode? <!--說明:說明程式碼概念的圖表或截圖 -->

為何使用 ReadPdf() 而非 Read()? `ReadPdf()` 方法專門針對 PDF 文件進行了優化,與通用的 `Read()` 方法相比具有優勢。 它能有效處理 PDF 的特定功能,例如多頁文件、向量圖形和內嵌圖像。 該方法可自動處理所有 PDF 頁面,並處理各種 PDF 格式和壓縮類型。如需瞭解全面的功能,請參閱 [ 讀取 BarCode 教程](https://ironsoftware.com/csharp/barcode/tutorials/reading-barcodes/)。 本節示範使用 IronBarcode 讀取 PDF 文件檔案為 `MemoryStream` 物件或 PDF 文件流的清單。 以下是程式碼:

多個 PDF 文件怎麼辦? ```csharp :path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-streams-2.cs ```

如何高效處理多個 PDF 串流? 以 `MemoryStream` 物件從 PDF 文件讀取條碼與從影像讀取類似。 關鍵差異在於方法:`BarcodeReader.ReadPdf()` 專門處理 PDF 文件。 本範例使用 IronPDF 將 PDF 文件轉換為 `MemoryStream` 物件。 對於多個 PDF 文件,在將其送入 `BarcodeReader.ReadPdf()` 之前,先將所有 PDF 合併為一個文件流。 此方法比分別處理每個 PDF 更有效率,並可減少記憶體開銷。 配置[PDF 特定的 BarCode 閱讀器設定](https://ironsoftware.com/csharp/barcode/examples/pdf-barcode-reader-settings-csharp/),以最佳化您文件的讀取。 針對進階方案,可處理特定頁面或 PDF 區域。 IronBarcode 允許指定頁面範圍和頁面中的裁剪區域,針對條碼出現的區域進行裁剪。 這可提高大型文件的處理速度。 在生產中使用串流時,請正確處理 `MemoryStream` 物件,以防止記憶體洩漏。 `using` 語句可確保自動處理: ```csharp using (MemoryStream pdfStream = new MemoryStream(pdfBytes)) { var results = BarcodeReader.ReadPdf(pdfStream); // Process results } ``` 進行實驗並根據您的特定需求調整資料庫。 IronBarcode 靈活的 API 允許廣泛的讀取流程自訂,從調整偵測靈敏度到指定預期的條碼格式。

常見問題解答

如何從串流讀取 BarCode 而不先儲存到磁碟?

IronBarcode 可讓您直接從 MemoryStream 物件讀取條碼,而無需儲存至磁碟。只需將您的流傳給BarcodeReader.Read()方法。此方法可消除磁碟 I/O 開銷,非常適合處理來自 Web 上傳、資料庫或 API 的影像。

當處理流時,Barcode 閱讀器支援哪些影像格式?

IronBarcode 從串流讀取時支援多種影像格式,包括 JPEG、PNG、GIF、TIFF、BMP 和 SVG。這種靈活性使您無需轉換格式即可處理來自不同來源的 BarCode 圖像。

我可以同時處理多個 BarCode 影像串流嗎?

是的,IronBarcode 支持异步和多线程功能,允许您同时处理多个条码流以获得最高性能。這在從記憶體處理大量條碼讀取操作時特別有用。

與基於檔案的 BarCode 讀取方式相比,使用記憶體串流有哪些優點?

採用 IronBarcode 的記憶體串流處理,可消除磁碟 I/O 開銷,提供更快的效能;由於敏感資料從未接觸磁碟儲存空間,因此安全性得以提升;並且與磁碟存取可能受限或昂貴的雲端環境相容性更佳。

如何從 PDF 文件流中讀取 BarCode?

IronBarcode 可以從圖片和 PDF 文件流中讀取條碼。只需將您的 PDF MemoryStream 傳送至 BarcodeReader.Read() 方法,它便會提取並解碼在 PDF 頁面中找到的所有條碼。

當使用串流工作時,是否可以微調 BarCode 讀取程序?

是的,IronBarcode 提供可自定義的條碼讀取器設定,無論是處理單一資料流或儲存於集合中的多個資料流,都能讓您針對特定的使用情況最佳化讀取程序。

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