Извлечение кадров TIFF

Формат файла тегового изображения, сокращенно TIFF или TIF, — это компьютерный формат файла для хранения растровых графических изображений, популярный среди графических художников, издательской индустрии и фотографов. TIFF отличается от JPEG, GIF и PNG, поскольку это «несжатый» формат. Файлы TIFF имеют возможность хранить несколько изображений, каждое из которых имеет несколько каналов. Обычно эти несколько изображений представляют собой последовательные кадры в стеке по времени или z-стеке изображений, и, следовательно, каждое из этих изображений имеет одинаковое измерение.

Другие опции, которые мы получаем в TIFF, — это слои и страницы, где слой можно сравнить с прозрачностью, на которой применяются эффекты визуализации или изображения и размещаются над или под изображением. Как показано на изображении ниже, изображение показывает несколько слоев, которые у него есть. В этой статье мы собираемся обсудить шаги по извлечению кадров из многокадровых изображений TIFF с помощью Aspose.Imaging Cloud SDK for .NET.

Изображение TIFF с рамками

Установка SDK

Aspose.Imaging Cloud SDK для .NET — это программный SDK, разработанный на основе API Aspose.Imaging Cloud и предоставляющий все возможности обработки изображений разработчикам .NET. Поэтому первым шагом является установка SDK, который доступен для загрузки на NuGet и GitHub. Выполните следующую команду, чтобы установить SDK из библиотеки NuGet.

Install-Package Aspose.Imaging-Cloud

Или в качестве альтернативы вы можете добавить пакет с помощью менеджера пакетов NuGet в Visual Studio, как показано ниже. Вы можете рассмотреть возможность посещения следующей ссылки для получения дополнительных сведений о Как установить Aspose.Cloud SDK.

Aspose.Imaging Cloud SDK

Теперь, чтобы использовать SDK, следующим шагом будет получение ваших персональных данных ClientID и ClientSecret. Поэтому первым шагом будет создание учетной записи, посетив панель управления Aspose.Cloud. Если у вас есть учетная запись GitHub или Google, просто зарегистрируйтесь. В противном случае нажмите кнопку Создать новую учетную запись и укажите необходимую информацию. Теперь войдите в панель управления, используя учетные данные, разверните раздел Приложения на панели управления и прокрутите вниз до раздела Учетные данные клиента, чтобы увидеть данные Client ID и Client Secret.

Предварительный просмотр ClientID и ClientSecret

Извлечение кадров TIFF с помощью команды cURL

Сначала мы обсудим извлечение кадров TIFF с помощью команды cURL, поскольку это один из удобных способов доступа к REST API на любой платформе. Независимо от платформы и базовых архитектурных сложностей. Поэтому для использования команд cURL первым шагом является генерация JSON Web Token (JWT) на основе ваших данных ClientID и ClientSecret, полученных с панели управления Aspose.Cloud. Пожалуйста, выполните следующую команду в терминале, чтобы сгенерировать токен 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, а затем передадите его имя в URL API. После обновления параметров изображения API возвращает обновленное изображение в ответе.

С другой стороны, с помощью второго API вы можете напрямую передавать изображение в теле запроса. Он также позволяет вам сохранять обновленное изображение в Cloud Storage, указав значение параметра outPath. Однако, если вы не укажете значение, ответ будет содержать потоковое изображение.

Теперь используйте следующую команду для извлечения 4-го кадра из изображения TiffSampleImage.tiff, уже загруженного в облачное хранилище.

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

Как извлечь кадры TIFF в C#

В этом разделе мы собираемся извлечь кадр TIFF с помощью C# .NET. Пожалуйста, следуйте шагам, указанным ниже

  • Первый шаг — создать объект ImagingApi, указав ClientID и ClientSecret в качестве аргументов.
  • Создать строковый объект, определяющий входное изображение TIFF
  • Чтобы указать кадр, который необходимо извлечь, создайте целое число
  • Создайте целочисленные объекты для указания размеров извлеченного кадра.
  • Следующим шагом является создание объекта GetImageFrameRequest, который принимает в качестве аргументов имя входного TIFF-файла, идентификатор кадра и другие параметры, связанные с размерами извлеченного кадра.
  • Предпоследний вызов метода GetImageFrame(..) ImagingApi, который принимает объект 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, пожалуйста, свяжитесь с нами через бесплатный форум поддержки.

Мы также предлагаем вам перейти по следующим ссылкам для получения дополнительной информации о