如何在 C# 中从多页 GIF 和 TIFF 图像中读取条形码

How to Read Barcodes from Multi-Page/Frame GIF and TIFF

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

IronBarcode supports various image format inputs for reading, including multi-page and multi-frame GIF and TIFF image formats. This offers ease of use for users to simply use the image without manually separating the frames or pages of a TIFF or GIF file. Let's explore how to use IronBarcode to read these file formats.

Quickstart: Reading Barcodes Entirely from Multipage TIFF or GIF Files

With just one simple method call, IronBarcode can load a multipage TIFF or animated GIF and extract all barcodes. No frame splitting or manual preprocessing—just pass the file path to BarcodeReader.Read for fast results.

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronBarcode with NuGet Package Manager

    PM > Install-Package BarCode

  2. Copy and run this code snippet.

    IronBarCode.BarcodeResults results = IronBarCode.BarcodeReader.Read("multiPageImage.tiff");
  3. Deploy to test on your live environment

    Start using IronBarcode in your project today with a free trial
    arrow pointer

Read Multiframe GIF and TIFF Images

Reading multiframe GIF and TIFF images using IronBarcode is as easy as reading a single image because IronBarcode readily accepts multipage image files into the BarcodeReader.Read method. The users do not have to do any image preparation as all of them have been internalized in the library.

The code example below demonstrates how to read multipage GIF and TIFF files:

: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
$vbLabelText   $csharpLabel

Convert Images to GIF and TIFF

Learn how to convert images to multipage TIFF and GIF by utilizing our open-source library, IronDrawing. Now, let's look at the code example below on how to generate a multipage GIF or TIFF image.

: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")
$vbLabelText   $csharpLabel

From the code snippet above, we first group a number of image files by importing them into a list of AnyBitmap objects. This list can then be used as a parameter when calling the AnyBitmap.CreateMultiFrameTiff and AnyBitmap.CreateMultiFrameGif methods to obtain the multipage TIFF and multipage GIF objects, respectively.

While both multipage GIF and TIFF offer a way to group images into a single file, there are several differences between the two formats, as outlined below:

Aspect Multipage GIF Multipage TIFF
Compression GIF images use lossless compression, meaning that no image data is lost during compression. This results in relatively larger file sizes compared to formats with lossy compression. TIFF files can use various compression methods, including lossless compression (such as LZW) and lossy compression (such as JPEG). This flexibility allows TIFF files to balance between file size and image quality.
Color Depth GIF supports up to 256 colors (8-bit color depth), which is limited compared to other formats. This limited color palette can result in a loss of detail and color accuracy, especially for photographs and images with gradients TIFF supports various color depths, including 1-bit (binary), 8-bit (256 colors), 24-bit (true color), and more. This flexibility allows TIFF to store images with different levels of color detail.
Transparency GIF supports binary transparency, which means that a single color can be fully transparent, and the rest of the colors are fully opaque. This lack of partial transparency can sometimes lead to jagged edges in images with smooth transitions. TIFF supports multiple forms of transparency, including binary transparency (similar to GIF) and alpha channel transparency. Alpha channel transparency allows for smooth transitions and semi-transparent pixels, providing high-quality transparency effects.
Animation GIF supports simple animations by combining multiple frames into a single file. Each frame can have its own time delay, creating a basic form of animation. GIF animations are widely supported on the web. TIFF is not primarily designed for animations. While it can store multiple images, it lacks built-in animation support like GIF. Each page in a multipage TIFF file is typically a separate image rather than a frame in an animation sequence.

Advanced Barcode Reading

Although IronBarcode works directly out of the box, some images may require configuring the BarcodeReaderOptions class to achieve accurate and fast barcode reading. You can find more information on this class in the 'How to read Barcodes from Image Files (jpg, png, gif, tiff, svg, bmp)' article.

The code snippet below provides examples of the necessary properties that can be configured in the BarcodeReaderOptions class.

: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
$vbLabelText   $csharpLabel

In the code snippet, we not only set BarcodeReaderOptions properties, but we also apply some filters, specifically the SharpenFilter and ContrastFilter. These filters essentially help in improving the clarity of blurry images for barcode detection and reading. You can find more information on image correction filters in the 'How to use Image Correction Filters' article.

For the BarcodeReaderOptions object, we suggest that users include ExpectMultipleBarcodes for IronBarcode to scan all available barcodes in the image file, Speed to balance between the reading accuracy and performance, ExpectBarcodeTypes to further increase performance, and ImageFilters to apply the filters set in ImageFilterCollection for reading accuracy.

Though setting the BarcodeReaderOptions object is optional for most use cases, it is important for users to get the most out of IronBarcode when reading barcodes from multipage GIF and TIFF image files.

常见问题解答

如何在 C# 中从多页 GIF 和 TIFF 文件中读取条形码?

您可以使用 IronBarcode 利用 BarcodeReader.Read 方法从多页 GIF 和 TIFF 文件中读取条形码。只需将图像文件传递给方法,IronBarcode 将无缝处理多页或多帧图像。

使用 IronBarcode 读取多页图像文件有什么好处?

IronBarcode 简化了读取多页图像文件的过程,直接接受它们而不需要手动分离帧或页面。它还提供了高级选项,如图像过滤器和 BarcodeReaderOptions,以提高阅读准确性。

我可以使用图像过滤器提高 IronBarcode 中的条形码读取准确性吗?

是的,您可以在 IronBarcode 中应用诸如灰度、SharpenFilter 和 ContrastFilter 之类的图像过滤器,以增强图像清晰度并提高条形码读取准确性。

使用 IronBarcode 是否可以在单张图像中读取多个条形码?

是的,通过在 BarcodeReaderOptions 类中启用 ExpectMultipleBarcodes 选项,IronBarcode 可以检测单张图像中的多个条形码。

如何使用 C# 将图像转换为多页 TIFF 或 GIF?

您可以使用 IronDrawing 库将图像转换为多页 TIFF 或 GIF 格式。将图像导入 AnyBitmap 对象列表,并使用 AnyBitmap.CreateMultiFrameTiffAnyBitmap.CreateMultiFrameGif 方法。

多页 GIF 和 TIFF 格式有什么区别?

多页 GIF 使用无损压缩并支持简单动画,但限制为 256 种颜色。多页 TIFF 支持各种压缩方法、更高的颜色深度和透明度选项,但不适合动画。

在用 IronBarcode 读取条形码之前,我是否需要预处理图像?

不需要预处理。IronBarcode 可以直接处理并读取多页图像文件,而无需任何手动准备。

如何使用 IronBarcode 应用高级条形码读取技术?

可以通过配置 BarcodeReaderOptions 类来实现 IronBarcode 中的高级条形码读取。选项如 ExpectMultipleBarcodesSpeedImageFilters 可以设置以优化性能和准确性。

Hairil Hasyimi Bin Omar
软件工程师
如所有伟大的工程师一般,Hairil 是个热心的学习者。他正在提高对 C#、Python 和 Java 的知识,并利用这些知识为 Iron Software 团队成员增值。Hairil 从马来西亚的玛拉工业大学加入 Iron Software 团队,获得化学与工艺工程学士学位。
准备开始了吗?
Nuget 下载 1,935,276 | 版本: 2025.11 刚刚发布