IronBarcode 操作指南 .NET 從影像讀取條碼 如何使用 C# 從影像中讀取條碼 Hairil Hasyimi Bin Omar 更新:2026年1月10日 下載 IronBarcode NuGet 下載 DLL 下載 開始免費試用 LLM副本 LLM副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 This article was translated from English: Does it need improvement? Translated View the article in English IronBarcode使用 C# 中的一行程式碼(BarcodeReader.Read())讀取影像中的條碼,支援多種影像格式,包括 PNG、JPEG、GIF、BMP、TIFF 和 SVG,並提供可自訂的選項以提高效能和準確性。 IronBarcode的一個關鍵特性是它能夠開箱即用地讀取多種影像格式的條碼。 IronBarcode目前支援以下影像格式: 可縮放向量圖形 (SVG) 聯合影像專家小組 (JPEG) 可攜式網路圖形 (PNG) 圖形交換格式 (GIF) 標籤影像檔案格式 (TIFF) 點陣圖影像檔(BMP) This is made possible with the help of our open source library, IronDrawing. 如需查看支援的條碼格式的完整清單(包括一維和二維類型),請查閱我們的完整文件。 快速入門:秒速讀取影像條碼 只需簡單地呼叫 IronBarCode.BarcodeReader.Read(),即可直接從 PNG、JPEG、GIF、BMP 和 TIFF 等圖片檔案格式中提取條碼資料。 立即開始使用-無需複雜設置,即可立即見效。 使用NuGet套件管理器安裝https://www.nuget.org/packages/BarCode PM > Install-Package BarCode 複製並運行這段程式碼。 var results = IronBarCode.BarcodeReader.Read("path/to/image.png"); 部署到您的生產環境進行測試 今天就在您的專案中開始使用免費試用IronBarcode Free 30 Day Trial 最簡工作流程(5個步驟) 下載用於從映像中讀取條碼的 C# 庫 使用`Read`方法從各種影像格式讀取條碼值 使用**BarcodeReaderOptions**類別配置讀取設定 使用**CropArea**屬性指定影像中的條碼區域 透過設定**ExpectBarcodeTypes**屬性來指定要讀取的條碼類型。 如何直接從影像中讀取條碼? 以下是如何使用IronBarcode進行條碼讀取。 如需了解有關在 C# / .NET中讀取條碼的全面教程,包括 PDF 處理和批量操作的高級技巧,請訪問我們的詳細指南: :path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-images-1.cs using IronBarCode; using System; var myBarcode = BarcodeReader.Read(@"image_file_path.jpg"); //image file path foreach (var item in myBarcode) { Console.WriteLine(item.ToString()); } $vbLabelText $csharpLabel 樣品測試二維碼 樣品測試條碼 想知道樣品中的條碼值是什麼嗎?試試這段程式碼片段吧! 要使用IronBarcode ,首先需要做的是透過 Microsoft Visual Studio NuGet套件管理器將IronBarcode庫安裝到您的專案中,如下圖所示。 這將允許您存取 IronBarcode 的 BarcodeReader.Read() 方法,直接讀取條碼影像。 IronBarcode提供了簡單易用的功能,使用者只需使用 BarcodeReader.Read() 即可讀取專案中已包含的映像文件,方法是將檔案名稱字串或檔案路徑字串作為方法的參數。 最佳實踐是在方法中指定檔案路徑時使用字串字面量"@",以避免在檔案路徑字串中新增多個轉義字元"\"。 在 BarcodeReader.Read() 方法呼叫的末尾附加 Values() 方法,以取得條碼值作為 System.String[] 物件。 若要將結果輸出到控制台,可以使用循環遍歷數組中儲存的值,並在循環區塊內呼叫迭代器變數作為參數的方法。 IronBarcode能夠讀取各種影像格式的一維條碼格式(Codabar, Code128, Code39, Code93, EAN13, Code93, EAN13, EAN18@, @ MSI, UPCA, Aztec, DataMatrix, QRCode)。 如何配置條碼閱讀器選項以獲得更好的效能? 條碼讀取速度太慢? 圖片中的條碼太小,導致IronBarcode無法讀取嗎? 只想讀取影像的特定區域? 想從包含多種條碼的圖像中只讀取特定類型的條碼嗎? 想提高整體閱讀能力嗎? BarcodeReaderOptions 允許使用者調整或修改條碼閱讀器的行為,以解決所有這些問題。 有關設定條碼閱讀器選項的詳細範例,請參閱我們的完整指南。以下各節將逐一討論 BarcodeReaderOptions 中所有可調節的屬性。 如何指定要讀取影像的哪個區域? CropArea 是 IronSoftware.Drawing.CropRectangle 類型屬性,可在 BarcodeReaderOptions 中使用,允許使用者指定IronBarcode應讀取的影像區域。 這有助於提高讀取效能,因為條碼讀取器無需掃描整個影像來尋找條碼,同時由於讀取區域已指定,讀取精度也得以提高。 了解更多關於如何指定作物種植區域以獲得最佳效果的資訊。 要設定 CropArea 屬性,只需實例化新的 Rectangle 類型對象,並將矩形的座標、寬度和長度指定為參數。 所接受的測量單位是像素(px)。 // Example of setting CropArea var cropArea = new IronSoftware.Drawing.Rectangle(x: 100, y: 100, width: 300, height: 300); var options = new BarcodeReaderOptions() { CropArea = cropArea }; // Example of setting CropArea var cropArea = new IronSoftware.Drawing.Rectangle(x: 100, y: 100, width: 300, height: 300); var options = new BarcodeReaderOptions() { CropArea = cropArea }; $vbLabelText $csharpLabel 為了加快讀取速度,我應該指定哪些條碼類型? 預設情況下, IronBarcode中所有支援的條碼都會掃描成影像。 但是,如果使用者知道有哪些類型的條碼可用,或者想要讀取影像中的條碼,則將此屬性設為僅讀取某些類型的條碼將大大提高讀取效能和準確性,因為條碼讀取器不需要遍歷條碼集合來解釋和讀取條碼。 要使用此屬性,只需將 ExpectBarcodeTypes 設定為 BarcodeEncoding 枚舉的某個欄位即可。 以下是IronBarcode支援的每種條碼類型的範例。 // Example: Expect only QR codes and Code128 var options = new BarcodeReaderOptions() { ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128 }; // Example: Expect only QR codes and Code128 var options = new BarcodeReaderOptions() { ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128 }; $vbLabelText $csharpLabel 以下是條碼類型列表,以及前面提供的範例和解釋。 何時應該禁用多重條碼讀取? IronBarcode預設會掃描影像中所有可用的條碼,包括掃描整個影像檔案並將讀取的條碼值新增至字串陣列中。 但是,如果使用者不希望讀取影像檔案中的多個條碼,使用者可以將此屬性設為false ,這樣條碼讀取器在找到條碼值後就會停止掃描。 這將再次提高IronBarcode的效能和讀取速度。 有關讀取多個條碼的更多信息,請參閱我們的專門指南。 影像濾波器如何提高條碼辨識率? BarcodeReaderOptions 中可以新增的屬性之一是影像濾鏡集合。 影像濾波器對於預處理輸入到IronBarcode 的原始影像非常重要。 若要套用 BarcodeReaderOptions 中的影像濾鏡,使用者必須先初始化並指定要使用的 ImageFilter 集合。 有關影像校正技術(包括濾鏡應用)的全面指導,請造訪我們的教學。 如何優化線程以獲得更好的性能? IronBarcode可讓使用者啟用和調整並行執行緒執行的數量,從而提高處理速度和效率。 並行執行緒是指在不同的處理器核心上同時執行多個執行緒。 IronBarcode中 MaxParallelThread 屬性的預設值為 4。使用者可以根據機器的性能和資源量進行調整。 我應該啟用多執行緒處理嗎? 該特性使IronBarcode能夠並行讀取多個影像。 Multithreaded 的預設值為true ,因此將自動管理多個執行緒以提高批次條碼讀取任務的效能。 為什麼要刪除假陽性讀數? 此屬性可消除所有誤報的條碼讀取結果。 假陽性條碼讀取是指條碼值的錯誤讀取,但卻被辨識為有效。 這可能是由於排序過程中的錯誤,或是條碼標籤或準備過程中的錯誤所造成的。 因此,將 RemoveFalsePositive 設為 true 將消除誤報的條碼讀數,從而提高條碼讀取準確率。 但是,如果使用者為了追求效能而犧牲準確性,則將此屬性設為false會有所幫助。此屬性的預設值為true 。 針對不同的使用場景,有哪些掃描模式可供選擇? 定義IronBarcode如何掃描和偵測影像中的條碼。 -自動:讀取條碼時,會自動進行影像預處理,並配置最佳的讀取器選項。 為獲得最佳效果和性能,建議採用此方法。 OnlyDetectionModel :掃描影像中的條碼,並傳回其位置的IronSoftware.Drawing.PointF陣列。 此模式無法讀取偵測到的條碼; 它只會傳回每個條碼的位置。 MachineLearningScan :使用機器學習偵測掃描影像中的條碼並讀取它們。 OnlyBasicScan :讀取條碼,無需機器學習偵測、自動影像預處理或讀取器選項配置。 This option can be used with IronBarCode.Slim alone. 閱讀速度設定如何影響準確度? 顧名思義, "速度"屬性使用戶能夠進一步優化IronBarcode閱讀器的效能。 與RemoveFalsePositive屬性類似,調整此屬性會降低準確性,但會提高效能。 如需深入了解閱讀速度選項(包括效能基準測試),請參閱我們的詳細指南。該指南接受ReadingSpeed枚舉類型,該枚舉類型包含 4 個級別,如下所示: -速度更快:可實現最快的條碼讀取速度,但會降低準確性。 該過程跳過了影像預處理,經常導致條碼結果為空。 僅當輸入影像清晰銳利時才使用此設定。 -平衡:建議對 Speed 屬性進行此設定。 它透過嘗試對影像進行輕微處理,使條碼區域更加清晰,從而在準確性和讀取性能之間取得平衡,使條碼讀取器能夠檢測到它。 大多數情況下,這種設定足以讓IronBarcode讀取條碼影像並產生準確的輸出。 -詳細資訊:如果使用設定 ReadingSpeed.Balanced 無法從讀取中產生條碼值,使用者可以選擇使用 ReadingSpeed.Detailed。 IronBarcode將對影像進行中等處理,以進一步清楚顯示條碼區域,以便條碼閱讀器能夠偵測到條碼。 此設定對於檢測較小或不太清晰的條碼影像非常有用。 ExtremeDetail :由於此設定會佔用大量 CPU 資源,因此最不建議使用。 將對條碼影像進行大量處理,以便閱讀器能夠讀取條碼。 建議使用者在選擇此設定之前,先對影像進行預處理/應用濾鏡。 何時應該使用 Code39 擴充模式? 此設定允許以擴展模式讀取和解釋 Code39 類型的條碼,其中將套用完整的 ASCII 字元集。 將 UseCode39ExtendedMode 設為true將能夠更準確地讀取 Code39 條碼。 如何實現具有自訂選項的高級條碼讀取? 現在我們已經了解了用戶可以調整的所有選項,無論是為了提高效能還是準確性,接下來我們將介紹如何在程式碼中應用它們。 以下程式碼片段示範了 BarcodeReaderOptions 的全面用法: using IronBarCode; using IronSoftware.Drawing; using System; using System.Linq; // Create custom reader options var options = new BarcodeReaderOptions() { // Specify expected barcode types for better performance ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128 | BarcodeEncoding.Code39, // Define specific area to scan (x, y, width, height in pixels) CropArea = new Rectangle(100, 100, 500, 400), // Set reading speed to balance accuracy and performance Speed = ReadingSpeed.Balanced, // Enable multithreading for better performance Multithreaded = true, MaxParallelThreads = 4, // Remove false positives for accuracy RemoveFalsePositive = true, // Enable Code39 extended mode if needed UseCode39ExtendedMode = true, // Set scan mode ScanMode = BarcodeReaderScanMode.Auto, // Add image filters for better recognition ImageFilters = new ImageFilterCollection() { new SharpenFilter(), new InvertFilter(), new ContrastFilter() } }; // Read barcodes with custom options var results = BarcodeReader.Read(@"C:\path\to\your\barcode-image.png", options); // Process results if (results.Any()) { foreach (var barcode in results) { Console.WriteLine($"Barcode Type: {barcode.BarcodeType}"); Console.WriteLine($"Value: {barcode.Value}"); Console.WriteLine($"Confidence: {barcode.Confidence}%"); Console.WriteLine($"Position: X={barcode.X}, Y={barcode.Y}"); Console.WriteLine("---"); } } else { Console.WriteLine("No barcodes found in the image."); } using IronBarCode; using IronSoftware.Drawing; using System; using System.Linq; // Create custom reader options var options = new BarcodeReaderOptions() { // Specify expected barcode types for better performance ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128 | BarcodeEncoding.Code39, // Define specific area to scan (x, y, width, height in pixels) CropArea = new Rectangle(100, 100, 500, 400), // Set reading speed to balance accuracy and performance Speed = ReadingSpeed.Balanced, // Enable multithreading for better performance Multithreaded = true, MaxParallelThreads = 4, // Remove false positives for accuracy RemoveFalsePositive = true, // Enable Code39 extended mode if needed UseCode39ExtendedMode = true, // Set scan mode ScanMode = BarcodeReaderScanMode.Auto, // Add image filters for better recognition ImageFilters = new ImageFilterCollection() { new SharpenFilter(), new InvertFilter(), new ContrastFilter() } }; // Read barcodes with custom options var results = BarcodeReader.Read(@"C:\path\to\your\barcode-image.png", options); // Process results if (results.Any()) { foreach (var barcode in results) { Console.WriteLine($"Barcode Type: {barcode.BarcodeType}"); Console.WriteLine($"Value: {barcode.Value}"); Console.WriteLine($"Confidence: {barcode.Confidence}%"); Console.WriteLine($"Position: X={barcode.X}, Y={barcode.Y}"); Console.WriteLine("---"); } } else { Console.WriteLine("No barcodes found in the image."); } $vbLabelText $csharpLabel 從程式碼片段中我們可以看出,要使用 BarcodeReaderOptions,我們必須先對其進行初始化,然後根據上面所述的屬性確定並調整 BarcodeReaderOptions 的屬性。 初始化後的 BarcodeReaderOptions 可以與圖像檔案一起作為參數傳遞給 BarcodeReader.Read() 方法。這樣,從影像中讀取條碼時,就會套用 BarcodeReaderOptions 中的所有設定。 如果您遇到條碼無法識別的問題,我們的故障排除指南提供了常見問題的解決方案和提高條碼掃描準確性的技巧。 常見問題解答 C# 中的 BarCode 讀取支援哪些影像格式? IronBarcode 支援從多種影像格式讀取條碼,包括 SVG (可縮放向量圖形)、JPEG、PNG、GIF、TIFF (標籤影像檔案格式),以及 BMP (位圖影像檔案)。此全面的格式支援由 IronDrawing 提供,可從各種影像類型中無縫擷取條碼。 如何只用一行代碼從影像檔案讀取 BarCode? 使用 IronBarcode,您只需一行代碼即可從影像中讀取條碼:`var results = IronBarCode.BarcodeReader.Read("path/to/image.png");`.這個簡單的方法調用可自動檢測並從 PNG、JPEG、GIF、BMP 和 TIFF 檔案中提取條碼資料,而無需任何複雜的設定。 我可以指定在讀取影像時要尋找哪些類型的 BarCode 嗎? 是的,IronBarcode 允許您使用 BarcodeReaderOptions 中的 ExpectBarcodeTypes 屬性指定條碼類型。這種有針對性的方法只針對您期望在圖像中找到的條碼格式,從而提高了讀取性能。 是否可以從影像中的特定區域讀取 BarCode? 絕對可以!IronBarcode 提供了 CropArea 屬性,允許您在圖像中指定條碼所在的特定區域。此功能對於大型圖像或當您知道條碼的大概位置時特別有用,可顯著提高處理速度。 如何設定進階閱讀設定以提高精確度? IronBarcode 提供 BarcodeReaderOptions 類以配置進階讀取設定。這包括自訂條碼偵測靈敏度、影像預處理和其他參數的選項,這些選項可在處理具有挑戰性的影像或特定條碼類型時提高準確性。 是什麼讓 C# 開發人員從影像讀取 BarCode 變得簡單? IronBarcode 通過提供 BarcodeReader.Read() 方法簡化了條碼讀取,該方法開箱即用,可使用多種圖像格式。開發人員只需指定文件名或文件路徑作為參數,這使得將條碼讀取功能集成到任何 C# 應用程序中變得非常簡單直接。 Hairil Hasyimi Bin Omar 立即與工程團隊聊天 軟體工程師 和所有优秀的工程师一样,Hairil 是個努力学习者。他正在细化自己的 C# 、Python 和 Java 知识,将这些知识應用于 Iron Software 各個团队成员以增加价值。Hairil 自马来西亚 Universiti Teknologi MARA 加入 Iron Software 团队,并以化学与工艺工程学士学位毕业。 準備好開始了嗎? Nuget 下載 2,108,094 | 版本: 2026.3 剛剛發布 開始免費試用 免費 NuGet 下載 總下載量:2,108,094 查看許可證 還在捲動嗎? 想要快速證明? PM > Install-Package BarCode 執行範例 看您的字串變成 BarCode。 免費 NuGet 下載 總下載量:2,108,094 查看許可證