如何从多页/帧 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、 IronDrawing.现在,让我们看看下面的代码示例,了解如何生成多页 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 图像使用无损压缩,这意味着在压缩过程中不会丢失图像数据。因此,与有损压缩格式相比,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 对象,我们建议用户为 IronBarcode 加入 ExpectMultipleBarcodes 以扫描图像文件中所有可用的条形码,加入 Speed 以平衡读取精度和性能,加入 ExpectBarcodeTypes 以进一步提高性能,加入 ImageFilters 以应用在 ImageFilterCollection 对象中设置的过滤器来提高读取精度。

虽然设置 BarcodeReaderOptions 对象在大多数使用情况下都是可选的,但当用户从多页 GIF 和 TIFF 图像文件中读取条形码时,这对充分利用 IronBarcode 非常重要。

海瑞尔 哈西米 本 奥马尔

软件工程师

像所有优秀的工程师一样,Hairil 是一个热衷学习的人。他正在精进自己的 C#、Python 和 Java 知识,并利用这些知识为 Iron Software 团队成员增添价值。Hairil 毕业于马来西亚的马来西亚工艺大学(Universiti Teknologi MARA),获得了化学与工艺工程学士学位,然后加入了 Iron Software 团队。