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

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

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

IronBarcode 支持多种图像格式输入进行读取,包括多页和多帧 GIF 和 TIFF图像格式。 这样一来,用户无需手动分离 TIFF 或 GIF 文件的帧或页面,即可轻松使用图像。接下来,我们将探讨如何使用 IronBarcode 读取这些文件格式。

快速入门:从多页 TIFF 或 GIF 文件中完整读取条形码

IronBarcode 只需一个简单的方法调用即可加载多页 TIFF 或动画 GIF 并提取所有条形码。 无需分割帧或手动预处理——只需将文件路径传递给 BarcodeReader.Read 即可快速获得结果。

Nuget Icon立即开始使用 NuGet 创建 PDF 文件:

  1. 使用 NuGet 包管理器安装 IronBarcode

    PM > Install-Package BarCode

  2. 复制并运行这段代码。

    IronBarCode.BarcodeResults results = IronBarCode.BarcodeReader.Read("multiPageImage.tiff");
  3. 部署到您的生产环境中进行测试

    立即开始在您的项目中使用 IronBarcode,免费试用!
    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
$vbLabelText   $csharpLabel

将图像转换为 GIF 和 TIFF 格式

学习如何利用我们的开源库IronDrawing将图像转换为多页 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")
$vbLabelText   $csharpLabel

从上面的代码片段中,我们首先将多个图像文件导入到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
$vbLabelText   $csharpLabel

在代码片段中,我们不仅设置了BarcodeReaderOptions属性,还应用了一些滤镜,特别是SharpenFilterContrastFilter 。 这些滤镜主要有助于提高模糊图像的清晰度,从而实现条形码的检测和读取。 您可以在"如何使用图像校正滤镜"一文中找到有关图像校正滤镜的更多信息。

对于BarcodeReaderOptions对象,我们建议用户添加ExpectMultipleBarcodes以让 IronBarcode 扫描图像文件中所有可用的条形码, Speed以平衡读取精度和性能,添加ExpectBarcodeTypes以进一步提高性能,以及添加ImageFilters以应用ImageFilterCollection中设置的过滤器来提高读取精度。

虽然对于大多数使用场景来说,设置 BarcodeReaderOptions 对象是可选的,但对于从多页 GIF 和 TIFF 图像文件中读取条形码的用户来说,为了充分利用 IronBarcode 的功能,设置BarcodeReaderOptions对象非常重要。

常见问题解答

如何在 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,979,979 | Version: 2025.11 刚刚发布