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

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

海里海西米·賓·奧馬

IronBarcode 支援多種影像格式輸入以進行讀取,包括多頁和多幀的 GIF 與 TIFF 影像格式。 這為用戶提供了便利,使他們可以直接使用圖像,而無需手動分離 TIFF 或 GIF 文件的框架或頁面。讓我們探索如何使用 IronBarcode 來讀取這些文件格式。

開始使用 IronBarcode

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

第一步:
green arrow pointer


讀取多幀 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)中讀取條碼'article.'

下面的程式碼片段提供了可以在 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。 這些過濾器本質上有助於提高模糊圖像的清晰度,以便於條碼檢測和讀取。 您可以在「如何使用圖像校正濾鏡'article.'

對於 BarcodeReaderOptions 物件,我們建議用戶包括 ExpectMultipleBarcodes 以便 IronBarcode 掃描圖像文件中的所有可用條碼,Speed 以在讀取精度和性能之間取得平衡,ExpectBarcodeTypes 以進一步提高性能,以及 ImageFilters 以應用設置在 ImageFilterCollection 物件中的過濾器以提高讀取精度。

雖然在大多數使用情況下設置 BarcodeReaderOptions 物件是可選的,但對於用戶在讀取多頁 GIF 和 TIFF 圖像文件中的條形碼時,充分利用 IronBarcode 是非常重要的。

Hairil related to 進階條碼讀取

海里海西米·賓·奧馬

軟體工程師

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