如何从多页/帧 GIF 和 TIFF 中读取条形码
IronBarcode 支持多种图像格式输入读取,包括多页、多帧 GIF 和 TIFF图像格式。这为用户提供了简单易用的图像使用方式,而无需手动分离 TIFF 或 GIF 文件的帧或页。让我们来探讨一下如何使用 IronBarcode 来读取这些文件格式。
如何从多页/帧 GIF 和 TIFF 中读取条形码
- 下载用于读取条形码的 C# 库
- 为条形码检测准备 GIF 和 TIFF 图像
- 将多帧 GIF 和 TIFF 图像传送到
读取
方法 - 应用图像过滤器和选项,提高准确性和性能
- 将图像转换为多帧 GIF 和 TIFF 文件
开始在您的项目中使用IronPDF,并立即获取免费试用。
查看 IronBarcode 上 Nuget 用于快速安装和部署。它有超过800万次下载,正在使用C#改变。
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
将图像转换为 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")
从上面的代码片段中,我们可以首先将多个图像文件分组,将它们导入到一个 AnyBitmap
对象列表中。然后,在调用 AnyBitmap.CreateMultiFrameTiff
和 AnyBitmap.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
在代码片段中,我们不仅设置了 BarcodeReaderOptions
属性,还应用了一些过滤器,特别是 SharpenFilter
和 ContrastFilter
。这些过滤器主要用于提高模糊图像的清晰度,以便进行条码检测和读取。有关图像校正过滤器的更多信息,请参阅 "图像校正过滤器"。如何使用图像校正滤镜'一文。
对于 BarcodeReaderOptions
对象,我们建议用户为 IronBarcode 加入 ExpectMultipleBarcodes
以扫描图像文件中所有可用的条形码,加入 Speed
以平衡读取精度和性能,加入 ExpectBarcodeTypes
以进一步提高性能,加入 ImageFilters
以应用在 ImageFilterCollection
对象中设置的过滤器来提高读取精度。
虽然设置 BarcodeReaderOptions
对象在大多数使用情况下都是可选的,但当用户从多页 GIF 和 TIFF 图像文件中读取条形码时,这对充分利用 IronBarcode 非常重要。