如何從多頁/幀 GIF 和 TIFF 中讀取條形碼

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

海里海西米·賓·奧馬

IronBarcode 支援多種影像格式輸入進行讀取,包括多頁和多幀的 GIF 和 TIFF 影像格式。這提供了使用者的便利,無需手動分離 TIFF 或 GIF 檔案的幀或頁面即可簡單地使用影像。讓我們來探討如何使用 IronBarcode 來讀取這些檔案格式。

C# NuGet 程式庫用于

安裝與 NuGet

Install-Package BarCode
Java PDF JAR

下載 DLL

下載DLL

手動安裝到您的項目中

C# NuGet 程式庫用于

安裝與 NuGet

Install-Package BarCode
Java PDF JAR

下載 DLL

下載DLL

手動安裝到您的項目中

立即開始在您的專案中使用IronPDF,並享受免費試用。

第一步:
green arrow pointer

查看 IronBarcodeNuget 快速安裝和部署。已被下載超過800萬次,它正用C#改變。

C# NuGet 程式庫用于 nuget.org/packages/BarCode/
Install-Package BarCode

請考慮安裝 IronBarcode DLL 直接下載並手動安裝到您的專案或GAC表單: IronBarCode.zip

手動安裝到您的項目中

下載DLL

讀取多幀 GIF 和 TIFF 圖像

使用 IronBarcode 讀取多幀 GIF 和 TIFF 圖像與讀取單張圖像一樣簡單,因為 IronBarcode 允許將多頁圖像文件傳入 BarcodeReader.Read 方法中。用戶不需要進行任何圖像準備,因為所有這些都已在庫中內置完成。

下面的代碼示例演示了如何讀取多頁 GIF 和 TIFF 文件:

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-multi-page-frame-tiff-gif-read-tif.cs
using IronBarCode;
using System;

// Read barcode from TIF image
BarcodeResults results = BarcodeReader.Read("sample.tif");

// Output the barcodes value to console
foreach (var result in results)
{
    Console.WriteLine(result.Value);
}
Imports IronBarCode
Imports System

' Read barcode from TIF image
Private results As BarcodeResults = BarcodeReader.Read("sample.tif")

' Output the barcodes value to console
For Each result In results
	Console.WriteLine(result.Value)
Next result
VB   C#

將圖像轉換為 GIF 和 TIFF

了解如何利用我們的開源庫將圖像轉換為多頁 TIFF 和 GIF, 鐵繪圖. 現在,我們來看看下面的代碼範例,瞭解如何生成多頁的GIF或TIFF圖像。

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-multi-page-frame-tiff-gif-create-tiff-gif.cs
using IronBarCode;
using IronSoftware.Drawing;
using System.Collections.Generic;

// Import images
List<AnyBitmap> images = new List<AnyBitmap>()
{
    AnyBitmap.FromFile("image1.png"),
    AnyBitmap.FromFile("image2.png"),
    AnyBitmap.FromFile("image3.png"),
    AnyBitmap.FromFile("image4.jpg"),
    AnyBitmap.FromFile("image5.jpg")
};

// Convert TIFF from images
AnyBitmap tiffImage = AnyBitmap.CreateMultiFrameTiff(images);

// Export TIFF
tiffImage.SaveAs("multiframetiff.tiff");

// Convert GIF from images
AnyBitmap gifImage = AnyBitmap.CreateMultiFrameGif(images);

// Export GIF
gifImage.SaveAs("multiframegif1.gif");
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System.Collections.Generic

' Import images
Private images As New List(Of AnyBitmap)() From {AnyBitmap.FromFile("image1.png"), AnyBitmap.FromFile("image2.png"), AnyBitmap.FromFile("image3.png"), AnyBitmap.FromFile("image4.jpg"), AnyBitmap.FromFile("image5.jpg")}

' Convert TIFF from images
Private tiffImage As AnyBitmap = AnyBitmap.CreateMultiFrameTiff(images)

' Export TIFF
tiffImage.SaveAs("multiframetiff.tiff")

' Convert GIF from images
Dim gifImage As AnyBitmap = AnyBitmap.CreateMultiFrameGif(images)

' Export GIF
gifImage.SaveAs("multiframegif1.gif")
VB   C#

從上面的程式碼片段中,我們可以首先通過將多個影像文件匯入到AnyBitmap對象的列表中來對其進行分組。然後可以將此列表作為參數傳遞給AnyBitmap.CreateMultiFrameTiffAnyBitmap.CreateMultiFrameGif方法,分別獲取多頁 TIFF 和多頁 GIF 對象。

雖然多頁 GIF 和 TIFF 都提供了一種將影像分組到單個文件中的方法,但這兩種格式之間存在如下幾個差異:

方面多頁 GIF多頁 TIFF
壓縮GIF 圖像使用無損壓縮,這意味著在壓縮過程中沒有圖像數據會丟失。這導致相比於有損壓縮格式相對較大的文件大小。TIFF 檔案可以使用各種壓縮方法,包括無損壓縮(如 LZW)和有損壓縮(如 JPEG)。這種靈活性使 TIFF 檔案可以在檔案大小和圖像質量之間取得平衡。
色深GIF 支援最多 256 種顏色(8 位元色深),與其他格式相比是有限的。這種有限的色彩調色盤可能會導致細節和色彩準確度的損失,特別是對於照片和具有漸層的影像。TIFF 支援各種色深,包括 1 位元(二進位)、8 位元(256 色)、24 位元(真色)等。這種靈活性使得 TIFF 能夠存儲具有不同顏色細節層次的圖像。
透明度GIF 支援二進位透明度,這意味著某一種顏色可以完全透明,而其餘顏色則是完全不透明。這種無部分透明的情況,有時會導致圖像中有平滑過渡時出現鋸齒邊緣。TIFF 支援多種形式的透明度,包括二值透明度(類似於 GIF)和 alpha 通道透明度。alpha 通道透明度允許平滑過渡和半透明像素,提供高質量的透明效果。
動畫GIF 通过将多帧合并为一个文件来支持简单动画。每一帧可以有自己的时间延迟,形成一种基本的动画形式。GIF 动画被广泛支持于網路上。TIFF 不是主要為動畫設計的。雖然它可以儲存多個圖像,但缺乏像 GIF 那樣的內建動畫支援。在多頁 TIFF 文件中,每頁通常是獨立的圖像,而不是動畫序列中的一幀。

高級條碼識別

雖然 IronBarcode 可以立即使用,但某些圖像可能需要配置 BarcodeReaderOptions 類別以實現準確快速的條碼識別。您可以在‘如何從圖像文件(jpg、png、gif、tiff、svg、bmp)中讀取條碼' 文章。

以下程式碼片段提供了可以在 BarcodeReaderOptions 類中配置的必要屬性的範例。

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-multi-page-frame-tiff-gif-advance.cs
using IronBarCode;
using System;

// Configure filters
ImageFilterCollection filters = new ImageFilterCollection()
{
    new SharpenFilter(3.5f),
    new ContrastFilter(2)
};

// Configure options
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    ExpectBarcodeTypes = IronBarCode.BarcodeEncoding.QRCode,
    ImageFilters = filters,
    ExpectMultipleBarcodes = true,
    Speed = ReadingSpeed.Balanced
};

// Read barcode from TIF image
BarcodeResults results = BarcodeReader.Read("sample.tif", options);

// Output the barcodes value to console
foreach (var result in results)
{
    Console.WriteLine(result.Value);
}
Imports IronBarCode
Imports System

' Configure filters
Private filters As New ImageFilterCollection() From {
	New SharpenFilter(3.5F),
	New ContrastFilter(2)
}

' Configure options
Private options As New BarcodeReaderOptions() With {
	.ExpectBarcodeTypes = IronBarCode.BarcodeEncoding.QRCode,
	.ImageFilters = filters,
	.ExpectMultipleBarcodes = True,
	.Speed = ReadingSpeed.Balanced
}

' Read barcode from TIF image
Private results As BarcodeResults = BarcodeReader.Read("sample.tif", options)

' Output the barcodes value to console
For Each result In results
	Console.WriteLine(result.Value)
Next result
VB   C#

在這段代碼片段中,我們不僅設置了 BarcodeReaderOptions 屬性,而且還應用了一些篩選器,特別是 SharpenFilterContrastFilter。這些篩選器實際上有助於提高模糊圖像在條碼檢測和讀取中的清晰度。您可以在「」中找到有關圖像校正篩選器的更多信息。如何使用圖像校正濾鏡' 文章。

對於 BarcodeReaderOptions 物件,我們建議使用者包含 ExpectMultipleBarcodes 以便 IronBarcode 掃描影像檔中的所有可用條碼,Speed 用於在閱讀準確性與性能之間取得平衡,ExpectBarcodeTypes 以進一步提高性能,還有 ImageFilters 用於應用 ImageFilterCollection 物件中的過濾器設定,以提高閱讀準確性。

雖然在大多數情況下,設置 BarcodeReaderOptions 物件是可選的,但當從多頁 GIF 和 TIFF 影像檔中閱讀條碼時,這對於充分利用 IronBarcode 非常重要。

海里海西米·賓·奧馬

軟體工程師

和所有優秀的工程師一樣,Hairil 是一位熱衷學習的人。他正在精進自己對 C#、Python 和 Java 的知識,利用這些知識為 Iron Software 團隊的成員創造價值。Hairil 從馬來西亞的馬來西亞工藝大學加入了 Iron Software 團隊,他在那裡獲得了化學和過程工程學士學位。