标记图像文件格式,缩写为 TIFF 或 TIF,是一种用于存储光栅图形图像的计算机文件格式,在图形艺术家、出版业和摄影师中很受欢迎。TIFF 与 JPEG、GIF 和 PNG 不同,因为它是一种“未压缩”格式。TIFF 文件能够存储多幅图像,每幅图像都有多个通道。通常,这些多幅图像表示图像的时间堆栈或 z 堆栈中的连续帧,因此这些图像中的每幅都具有相同的尺寸。
我们在 TIFF 中获得的其他选项是图层和页面,其中图层可以与透明度进行比较,在其上应用成像效果或图像并将其放置在图像上方或下方。如下图所示,图像显示了其具有的多个图层。在本文中,我们将讨论如何使用 Aspose.Imaging Cloud SDK for .NET 从多帧 TIFF 图像中提取帧的步骤。
SDK 的安装
Aspose.Imaging Cloud SDK for .NET 是基于 Aspose.Imaging Cloud API 开发的编程 SDK,为 .NET 开发人员提供所有图像处理功能。因此,第一步是安装 SDK,可在 NuGet 和 GitHub 下载。执行以下命令从 NuGet 库安装 SDK。
Install-Package Aspose.Imaging-Cloud
或者,您也可以使用 Visual Studio 中的 NuGet 包管理器添加包,如下所示。您可以考虑访问以下链接以获取有关 如何安装 Aspose.Cloud SDKs 的更多详细信息。
现在,为了使用 SDK,下一步是获取您的个性化 ClientID 和 ClientSecret 详细信息。因此,第一步是通过访问 Aspose.Cloud 仪表板 创建一个帐户。如果您有 GitHub 或 Google 帐户,只需注册即可。否则,单击 创建新帐户 按钮并提供所需信息。现在使用凭据登录仪表板并从仪表板展开应用程序部分,然后向下滚动到客户端凭据部分以查看客户端 ID 和客户端密钥详细信息。
使用 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 时遇到任何问题,请随时通过 免费支持论坛 与我们联系。
我们还建议您通过以下链接获取更多信息