提取 TIFF 帧

标记图像文件格式,缩写为 TIFF 或 TIF,是一种用于存储光栅图形图像的计算机文件格式,在图形艺术家、出版业和摄影师中很受欢迎。TIFFJPEGGIFPNG 不同,因为它是一种“未压缩”格式。TIFF 文件能够存储多幅图像,每幅图像都有多个通道。通常,这些多幅图像表示图像的时间堆栈或 z 堆栈中的连续帧,因此这些图像中的每幅都具有相同的尺寸。

我们在 TIFF 中获得的其他选项是图层和页面,其中图层可以与透明度进行比较,在其上应用成像效果或图像并将其放置在图像上方或下方。如下图所示,图像显示了其具有的多个图层。在本文中,我们将讨论如何使用 Aspose.Imaging Cloud SDK for .NET 从多帧 TIFF 图像中提取帧的步骤。

带框架的 TIFF 图像

SDK 的安装

Aspose.Imaging Cloud SDK for .NET 是基于 Aspose.Imaging Cloud API 开发的编程 SDK,为 .NET 开发人员提供所有图像处理功能。因此,第一步是安装 SDK,可在 NuGetGitHub 下载。执行以下命令从 NuGet 库安装 SDK。

Install-Package Aspose.Imaging-Cloud

或者,您也可以使用 Visual Studio 中的 NuGet 包管理器添加包,如下所示。您可以考虑访问以下链接以获取有关 如何安装 Aspose.Cloud SDKs 的更多详细信息。

Aspose.Imaging Cloud SDK

现在,为了使用 SDK,下一步是获取您的个性化 ClientID 和 ClientSecret 详细信息。因此,第一步是通过访问 Aspose.Cloud 仪表板 创建一个帐户。如果您有 GitHub 或 Google 帐户,只需注册即可。否则,单击 创建新帐户 按钮并提供所需信息。现在使用凭据登录仪表板并从仪表板展开应用程序部分,然后向下滚动到客户端凭据部分以查看客户端 ID 和客户端密钥详细信息。

ClientID 和 ClientSecret 预览

使用 cURL 命令提取 TIFF 帧

首先,我们将讨论使用 cURL 命令提取 TIFF 帧,因为它们是访问任何平台上 REST API 的便捷方式之一。无论平台和底层架构的复杂性如何。因此,为了使用 cURL 命令,第一步是根据从 Aspose.Cloud 仪表板检索到的 ClientID 和 ClientSecret 详细信息生成 JSON Web Token (JWT)。请在终端中执行以下命令以生成 JWT 令牌

curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=718e4235-8866-4ebe-bff4-f5a14a4b6466&client_secret=388e864b819d8b067a8b1cb625a2ea8e" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"

在继续操作之前,请注意可以使用以下两个 API 之一来提取帧:

第一个 API 要求您先将图片上传到 Cloud Storage,然后在 API URL 中传递其名称。更新图片参数后,API 会在响应中返回更新后的图片。

另一方面,使用第二个 API,您可以直接在请求正文中传递图像。它还允许您通过指定 outPath 参数值将更新后的图像保存在 Cloud Storage 上。但是,如果您不指定该值,则响应将包含流式图像。

现在使用以下命令从已上传到云存储的 TiffSampleImage.tiff 图像中提取第 4 帧。

curl -v -X GET "https://api.aspose.cloud/v3.0/imaging/TiffSampleImage.tiff/frames/4?saveOtherFrames=true" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>" \
-o myresultant.tiff

如何在 C# 中提取 TIFF 帧

在本节中,我们将使用 C# .NET 提取 TIFF 帧。请按照以下步骤操作

  • 第一步是创建 ImagingApi 的对象,同时提供 ClientID 和 ClientSecret 作为参数
  • 创建定义输入 TIFF 图像的字符串对象
  • 为了指定要提取的帧,创建一个整数
  • 创建整数对象来指定提取帧的尺寸
  • 下一步是创建一个对象 GetImageFrameRequest,它将输入的 TIFF 名称、frameID 和与提取的帧尺寸相关的其他参数作为参数
  • 倒数第二,调用 ImagingApi 的 GetImageFrame(..) 方法,该方法以 GetImageFrameRequest 对象作为输入参数
  • 最后,保存输出以加载驱动器
string clientID = "718e4235-8866-4ebe-bff4-f5a14a4b6466"; // Get ClientID from https://dashboard.aspose.cloud/
string clientSecret = "388e864b819d8b067a8b1cb625a2ea8e"; // Get CLientSecret from https://dashboard.aspose.cloud/

// 创建 ImagingApi 实例
Aspose.Imaging.Cloud.Sdk.Api.ImagingApi imagingApi = new ImagingApi(clientSecret, clientID,"https://api.aspose.cloud/","v3.0",false);

// 输入可在云存储上获取的 TIFF 图像
String fileName = "TiffSampleImage.tiff";

int? frameId = 5; // Index of a frame
int? newWidth = 300;
int? newHeight = 450;
int? x = 10;
int? y = 10;
int? rectWidth = 200;
int? rectHeight = 300;

string rotateFlipMethod = "RotateNoneFlipNone";

// 结果将仅包含指定的帧
bool? saveOtherFrames = false;

string folder = null; // Input file is saved at the root of the storage
string storage = null; // We are using default Cloud Storage

GetImageFrameRequest getImageFrameRequest = new GetImageFrameRequest(fileName, frameId, newWidth, newHeight,
                                x, y, rectWidth, rectHeight, rotateFlipMethod, saveOtherFrames, folder, storage);

Stream imageFrame = imagingApi.GetImageFrame(getImageFrameRequest);

// 将更新后的图像保存到本地存储
using (var fileStream = File.Create("/Users/nayyershahbaz/Downloads/MyResultant.tiff"))
{
    imageFrame.Seek(0, SeekOrigin.Begin);
    imageFrame.CopyTo(fileStream);
}

请注意,rotateFlipMethod 属性可以具有以下值之一

RotateFlip 方法(Rotate180FlipNone、Rotate180FlipX、Rotate180FlipXY、Rotate180FlipY、Rotate270FlipNone、Rotate270FlipX、Rotate270FlipXY、Rotate270FlipY、Rotate90FlipNone、Rotate90FlipX、Rotate90FlipXY、Rotate90FlipY、RotateNoneFlipNone、RotateNoneFlipX、RotateNoneFlipXY、RotateNoneFlipY)。默认值为 RotateNoneFlipNone。

结论

上文已解释如何从多帧 TIFF 中提取 TIFF 帧。除了帧提取之外,API 还允许您 调整 TIFF 帧的大小获取 TIFF 帧属性裁剪 TIFF 帧旋转翻转 TIFF 帧 等。如果您在使用 API 时遇到任何问题,请随时通过 免费支持论坛 与我们联系。

我们还建议您通过以下链接获取更多信息