How to Read Barcodes from Streams with C
IronBarcode 可直接從.NET應用程式中的MemoryStream物件讀取條形碼,無需先將流保存到磁碟。這允許從儲存在記憶體中的影像和PDF文件流進行高效的條形碼處理。
MemoryStream是一個.NET Framework類別,它可以從儲存在記憶體中的流中進行讀寫。 它在記憶體中儲存資料,而不需要實際的文件。 此方法非常適合網頁應用程式、API,或者接收條形碼資料作為位元組陣列的情況,或需處理不建立暫時文件的影像。
除了從影像文件或PDF文件讀取條形碼之外,IronBarcode還能從流中讀取條形碼。 該程式庫接收PDF文件或影像流作為輸入,並輸出條形碼讀取結果。 此能力適合從資料庫、網站上傳或記憶體快取的內容中處理資料。
快速開始:直接從影像流讀取條形碼
使用IronBarcode的兩行程式碼從任何影像流中讀取條形碼——不需要磁碟寫入。 此範例展示了在.NET中基於流的條形碼讀取。
最小化工作流程(5步驟)
- 從影像流讀取條形碼
- 從PDF文件流中讀取條形碼
如何從影像流中讀取條形碼?
為什麼使用記憶體流而不是文件?
記憶體流提供了比基於文件的操作更多的優勢。 它們消除了磁碟I/O的開銷,使應用程式更快速。 由於敏感的條形碼資料從未接觸磁碟,它們提高了安全性。 它們同樣適合磁碟存取受限或昂貴的雲環境。結合IronBarcode的異步與多執行緒能力,您可以同時處理多個流以獲得最大效能。
本節顯示如何使用IronBarcode讀取儲存在List<MemoryStream>中的單個及多個影像流。 以下程式碼包含注釋,用於解釋過程:
支持哪種型別的影像格式?
IronBarcode支持從流中讀取多種影像格式:JPEG、PNG、GIF、TIFF、BMP和SVG。 這種靈活性允許處理無論來源格式的條形碼影像。 為了獲得最佳結果,使用條形碼讀取器設定來微調讀取過程。
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<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.Collections.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 System
Imports System.Collections.Generic
Imports System.IO
Friend Class BarcodeFromImageStream
Shared Sub Main(ByVal args() As String)
' Create a list of MemoryStreams to store image streams
Dim imageStreams As New List(Of MemoryStream) From {
New MemoryStream(File.ReadAllBytes("example1.png")),
New MemoryStream(File.ReadAllBytes("example2.png"))
}
Dim IronBarCode As using
Using IronSoftware.Drawing
Dim System As using
Using System.Collections.Generic
Using System.IO
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 barcode
End Using
End Using
End Using
如何處理多個影像流?
上面的程式碼顯示IronBarcode接受單個BarcodeReader.Read()方法中。 該範例將影像文件轉換為MemoryStream物件並直接從流中讀取條形碼。
當處理多個流時,IronBarcode有效地使用其讀取速度選項。 根據您的需求調整讀取速度——無論是需要最大準確性還是最快處理時間。從單個流中讀取多個條形碼時,IronBarcode會自動檢測並返回所有找到的條形碼。
對於流中不完美或低質量影像的增強準確性,在處理之前應用影像校正過濾器。 這顯著改善條形碼識別率。
如何從PDF文件流中讀取條形碼?
為什麼使用Read()?
Read()方法更好的優勢。 它高效地處理PDF特有的功能,如多頁文件、向量圖形和嵌入影像。 該方法自動處理所有PDF頁面,並有效應對各種PDF格式和壓縮型別。對於綜合特點,請參見條形碼讀取教程。
本節展示了使用IronBarcode來讀取作為MemoryStream物件或PDF文件流列表的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文件中作為MemoryStream物件讀取條形碼類似於從影像讀取。 主要差異在於方法:BarcodeReader.ReadPdf()專門處理PDF文件。 範例使用IronPDF將PDF文件轉換為MemoryStream物件。
對於多個PDF文件,將所有PDF合併為一個文件流,然後再將其提供給BarcodeReader.ReadPdf()。 此方法比單獨處理每個PDF更有效,並減少記憶體負擔。 配置PDF專用條形碼讀取器設定來優化您的文件讀取。
對於高級場景,處理特定的頁面或PDF的區域。 IronBarcode允許指定頁面範圍和裁剪頁面中的區域,鎖定條形碼出現的區域。 這提高了處理大型文件的速度。
在生產環境中使用流時,正確處理MemoryStream物件以防止記憶體洩漏。 using語句確保自動處理:
:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-streams-4.cs
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允許從調整檢測靈敏度到指定預期條形碼格式的廣泛讀取過程自訂。
常見問題
如何在不先保存到磁碟的情況下從資料流讀取條碼?
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設計為可擴展且多功能,使其適合小型專案和需要強大條碼解決方案的大型企業應用。

