How to Read Barcodes from Streams with C
IronBarcode 可直接從 .NET 應用程式的 MemoryStream 物件中讀取 BarCode,無需先將資料流儲存至磁碟。這使得從記憶體中儲存的影像及 PDF 文件資料流進行高效 BarCode 處理成為可能。
MemoryStream 是一個 .NET Framework 類別,用於讀取和寫入儲存於記憶體中的串流。 它無需實體檔案即可處理資料,而是將資料儲存於記憶體中。 此方法適用於網頁應用程式、API,或您需要接收以位元組陣列形式呈現的BarCode資料,或需在不建立暫存檔案的情況下處理影像的場景。
除了能從影像檔案或 PDF 檔案讀取 BarCode 外,IronBarcode 也能從資料流中讀取 BarCode。 此函式庫接受 PDF 文件或影像串流作為輸入,並輸出 BarCode 讀取結果。 此功能適用於處理來自資料庫、網頁上傳或記憶體快取內容的資料。
快速入門:直接從影像串流讀取BarCode using IronBarcode 的兩行程式碼,即可從任何影像串流讀取 BARCODE——無需寫入磁碟。 此範例展示在 .NET 中基於流的 BarCode 讀取功能。
簡化工作流程(5 個步驟)
- 從 ImageStream 讀取 BarCode
- 從 PDF 文件流中讀取 BarCode
如何從影像串流中讀取BarCode?
為何使用記憶體流而非檔案?
相較於基於檔案的操作,記憶體流具備多項優勢。 它們能消除磁碟 I/O 的開銷,使應用程式運行更快速。 由於敏感的BarCode資料從未接觸磁碟,因此能提升安全性。 這些工具也適用於磁碟存取受限或成本高昂的雲端環境。結合 IronBarcode 的非同步與多執行緒功能,您可同時處理多個資料流,以獲得最佳效能。
本節說明如何使用 IronBarcode 讀取一個或多個儲存於 List<MemoryStream> 中的影像串流。 以下程式碼包含說明流程的註解:
支援哪些類型的圖像格式?
IronBarcode 在從串流讀取時支援多種圖像格式:JPEG、PNG、GIF、TIFF、BMP 及 SVG。 這種靈活性使得無論原始格式為何,皆能處理BARCODE影像。 為獲得最佳效果,請使用BarCode讀取器設定來微調讀取流程。
using IronBarCode;
using System;
using System.Co/llections.Generic;
using System.IO;
class BarcodeFromImageStream
{
static void Main(string[] args)
{
// Create a list of MemoryStreams to store image streams
List<MemoryStream> imageStreams = new List<MemoryStream>
{
// 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
using IronBarCode;
using System;
using System.Co/llections.Generic;
using System.IO;
class BarcodeFromImageStream
{
static void Main(string[] args)
{
// Create a list of MemoryStreams to store image streams
List<MemoryStream> imageStreams = new List<MemoryStream>
{
// Example of adding an existing MemoryStream object to the list
new MemoryStream(File.ReadAllBytes("example1.png")),
new MemoryStream(File.ReadAllBytes("example2.png"))
};
using IronBarCode;
using IronSoftware.Drawing;
using System;
using System.Collections.Generic;
using System.IO;
List<MemoryStream> list = new List<MemoryStream>();
list.Add(AnyBitmap.FromFile("image1.jpg").ToStream());
list.Add(AnyBitmap.FromFile("image2.jpg").ToStream());
list.Add(AnyBitmap.FromFile("image3.png").ToStream());
var myBarcode = BarcodeReader.Read(list);
foreach (var barcode in myBarcode)
{
Console.WriteLine(barcode.ToString());
}
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System
Imports System.Collections.Generic
Imports System.IO
Module BarcodeFromImageStream
Sub Main(args As String())
' Create a list of MemoryStreams to store image streams
Dim imageStreams As New List(Of MemoryStream) From {
' Example of adding an existing MemoryStream object to the list
New MemoryStream(File.ReadAllBytes("example1.png")),
New MemoryStream(File.ReadAllBytes("example2.png"))
}
Dim list As New List(Of MemoryStream)()
list.Add(AnyBitmap.FromFile("image1.jpg").ToStream())
list.Add(AnyBitmap.FromFile("image2.jpg").ToStream())
list.Add(AnyBitmap.FromFile("image3.png").ToStream())
Dim myBarcode = BarcodeReader.Read(list)
For Each barcode In myBarcode
Console.WriteLine(barcode.ToString())
Next
End Sub
End Module
如何處理多個影像串流?
上方的程式碼顯示 IronBarcode 在 BarcodeReader.Read() 方法中接受單一 MemoryStream 物件或一組 MemoryStream 物件。 此範例將圖像檔案轉換為 MemoryStream 物件,並直接從資料流中讀取 BARCODE。
在處理多個資料流時,IronBarcode 會有效運用其讀取速度選項。 請根據您的需求調整讀取速度——無論是追求最高準確度,還是最快的處理速度。若需從單一資料流中讀取多個 BarCode,IronBarcode 會自動偵測並回傳所有找到的 BarCode。
若要提升處理流中不完整或低品質影像的準確度,請在處理前套用影像校正濾鏡。 這能顯著提升BarCode辨識率。
如何從 PDF 文件流中讀取 BarCode?
為何使用 ReadPdf() 而不是 Read()?
ReadPdf() 方法專為 PDF 文件進行優化,相較於通用的 Read() 方法,具有更多優勢。 它能高效處理 PDF 的特定功能,例如多頁文件、向量圖形及嵌入式圖片。 此方法會自動處理所有 PDF 頁面,並支援各種 PDF 格式與壓縮類型。如需了解完整功能,請參閱"讀取 BarCode"教學指南。
本節將示範如何使用 IronBarcode 讀取 PDF 文件,並將其轉換為 MemoryStream 物件或 PDF 文件流清單。 以下是程式碼:
若涉及多個 PDF 文件該如何處理?
:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-streams-2.cs
using IronBarCode;
using IronPdf;
using System;
using System.IO;
MemoryStream document = PdfDocument.FromFile(@"file_path.pdf").Stream;
var myBarcode = BarcodeReader.ReadPdf(document);
foreach (var value in myBarcode)
{
Console.WriteLine(value.ToString());
}
Imports IronBarCode
Imports IronPdf
Imports System
Imports System.IO
Private document As MemoryStream = PdfDocument.FromFile("file_path.pdf").Stream
Private myBarcode = BarcodeReader.ReadPdf(document)
For Each value In myBarcode
Console.WriteLine(value.ToString())
Next value
如何高效處理多個 PDF 資料流?
從 PDF 文件中讀取 BARCODE 並將其作為 MemoryStream 物件處理,其運作方式類似於從圖像中讀取資料。 關鍵差異在於處理方式:BarcodeReader.ReadPdf() 專門處理 PDF 文件。 此範例使用 IronPDF 將 PDF 文件轉換為 MemoryStream 物件。
若有多份 PDF 文件,請先將所有 PDF 合併為單一文件流,再傳入 BarcodeReader.ReadPdf()。 此方法比逐一處理每個 PDF 更為高效,並能減少記憶體開銷。 請設定 PDF 專用的 BarCode 讀取器設定,以針對您的文件進行最佳化讀取。
針對進階情境,可處理特定網頁或 PDF 區域。 IronBarcode 允許指定頁碼範圍及頁面內的裁切區域,鎖定 BarCode 出現的位置。 這能提升處理大型文件的速度。
在生產環境中使用串流時,請妥善釋放 MemoryStream 物件,以防止記憶體洩漏。 using 語句可確保自動處理:
using (MemoryStream pdfStream = new MemoryStream(pdfBytes))
{
var results = BarcodeReader.ReadPdf(pdfStream);
// Process results
}
using (MemoryStream pdfStream = new MemoryStream(pdfBytes))
{
var results = BarcodeReader.ReadPdf(pdfStream);
// Process results
}
Imports System.IO
Using pdfStream As New MemoryStream(pdfBytes)
Dim results = BarcodeReader.ReadPdf(pdfStream)
' Process results
End Using
請根據您的具體需求,嘗試並調整此函式庫以符合需求。 IronBarcode 的靈活 API 允許對讀取流程進行廣泛的自訂,從調整偵測靈敏度到指定預期的 BarCode 格式皆可。
常見問題
如何從流中讀取條碼而無需先保存到磁碟?
IronBarcode允許您直接從MemoryStream對象讀取條碼,而不需保存到磁碟。只需將您的流傳遞給BarcodeReader.Read()方法。此方法消除了磁碟I/O的開銷,非常適合處理來自網頁上傳、資料庫或API的圖像。
在處理流時,條碼讀取器支持哪些圖像格式?
IronBarcode在從流中讀取時支持多種圖像格式,包括JPEG、PNG、GIF、TIFF、BMP和SVG。這種靈活性允許您在不進行格式轉換的情況下處理各種來源的條碼圖像。
我可以同時處理多個條碼圖像流嗎?
是的,IronBarcode支持非同步和多執行緒功能,允許您同時處理多個條碼流以達到最大效能。這樣特別適用於從記憶體中進行大量條碼讀取操作時。
使用記憶體流進行條碼讀取相比於基於檔案的方法有什麼優勢?
使用IronBarcode進行記憶體流處理通過消除磁碟I/O的開銷來提供更快的效能,由於敏感數據不會接觸磁碟儲存,所以增強了安全性,並且對雲環境更為兼容,因為在雲環境中磁碟存取可能有限或成本昂貴。
如何從PDF文件流中讀取條碼?
IronBarcode可以從圖像和PDF文件流中讀取條碼。只需將您的PDF MemoryStream傳遞給BarcodeReader.Read()方法,它將提取並解碼PDF頁面中找到的所有條碼。
在使用流進行工作時,我是否可以微調條碼讀取過程?
是的,IronBarcode提供可自定義的條碼讀取器設置,允許您根據具體使用情況優化讀取過程,無論是處理單個流還是存儲在集合中的多個流。
IronBarcode是否提供自定義條碼外觀的支持?
是的,IronBarcode提供了廣泛的條碼外觀自定義選項,包括顏色、大小和文字註釋,讓您可以根據具體設計需求定制條碼。
IronBarcode如何幫助改善業務流程效率?
IronBarcode通過使條碼生成和讀取快速且準確來提高業務流程效率,減少手動數據輸入錯誤,並改善庫存和資產追蹤。
將IronBarcode實現於專案中需要什麼程式設計技能?
基本的C#程式設計知識足以將IronBarcode實現於專案中,因為它提供了簡單的方法和全面的文檔來指導開發者。
IronBarcode適合於小型專案和大型企業應用嗎?
IronBarcode設計為可擴展且多功能,使其適合小型專案和需要強大條碼解決方案的大型企業應用。

