Извлечение метаданных из изображений с помощью C#

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

В этой статье обсуждаются/рассматриваются следующие темы:

REST API и .NET SDK для управления метаданными документа

Для управления метаданными изображений JPEG я буду использовать .NET SDK of GroupDocs.Metadata Cloud API. Он позволяет добавлять, редактировать, извлекать и удалять свойства метаданных из документов и форматов файлов изображений. Вам просто нужно определить критерии поиска, и метаданные Cloud REST API позаботятся об указанных операциях с метаданными в поддерживаемых форматах файлов. Он также предоставляет Java SDK в качестве своих членов семейства манипулирования метаданными документа для Cloud API.

Вы можете установить GroupDocs.Metadata в свой проект Visual Studio из диспетчера пакетов NuGet или с помощью следующей команды в консоли диспетчера пакетов:

Install-Package GroupDocs.Metadata-Cloud

Пожалуйста, получите свой идентификатор клиента и секретный код клиента на панели, прежде чем приступать к выполнению шагов и доступных примеров кода. Получив идентификатор клиента и секрет, добавьте код, как показано ниже:

string clientID = "112f0f38-9dae-42d5-b4fc-cc84ae644972";
string clientSecret = "16ad3fe0bdc39c910f57d2fd48a5d618";
string myStorage = "";

Configuration configuration = new Configuration(clientID, clientSecret);
configuration.ApiBaseUrl = "https://api.groupdocs.cloud";

Добавление метаданных к изображениям с помощью REST API на C#

Вы можете добавить метаданные к изображениям, выполнив простые шаги, указанные ниже:

Загрузить изображение

Во-первых, загрузите файл JPEG в облако, используя пример кода, приведенный ниже:

// инициализация API
FileApi fileApi = new FileApi(configuration);
string path = @"C:\Files";

var file = Directory.GetFiles(path, "input.jpg", SearchOption.AllDirectories).FirstOrDefault();
if (file.Length != 0)
{
    var relativeFilePath = file.Replace(path, string.Empty).Trim(Path.DirectorySeparatorChar);

    var fileStream = File.Open(file, FileMode.Open);

    fileApi.UploadFile(new UploadFileRequest(relativeFilePath, fileStream, myStorage));
    fileStream.Close();
}

В результате загруженный файл изображения JPEG будет доступен в разделе файлов вашей панели управления в облаке.

Добавить метаданные в изображение с помощью C#

Вы можете добавить метаданные к изображению JPEG программно, выполнив шаги, указанные ниже.

  • Создайте экземпляр MetadataApi
  • Установите путь к файлу изображения JPEG в модели FileInfo.
  • Определить дополнительные параметры
  • Установите Value и SearchCriteria для свойства с помощью модели AddProperty.
  • Создайте AddRequest с помощью AddOptions
  • Получите результаты, вызвав метод MetadataApi.Add().

В следующем примере кода показано, как добавить метаданные в изображение JPEG с помощью REST API.

// инициализация API
var apiInstance = new MetadataApi(configuration);

// путь к входному изображению
var fileInfo = new GroupDocs.Metadata.Cloud.Sdk.Model.FileInfo
{
    FilePath = "input.jpg"
};

// определить параметры добавления метаданных
var options = new AddOptions
{
    FileInfo = fileInfo,
    Properties = new List<AddProperty>
    {
        new AddProperty
        {
            Value = "All rights reserved.",
            Type = "String",
            SearchCriteria = new SearchCriteria
            {
                TagOptions = new TagOptions
                {
                    PossibleName = "Copyright"
                }
            },
        }
    }
};

// добавить запрос
var request = new AddRequest(options);
var response = apiInstance.Add(request);
Добавить метаданные из изображений с помощью REST API в C#

Добавить метаданные из изображений с помощью REST API в C#

Скачать изображение

Приведенные выше примеры кода сохранят обновленный файл JPEG в облаке и могут быть загружены с помощью следующего примера кода:

// инициализация API
var fileApi = new FileApi(configuration);

// путь по умолчанию
var file = "metadata\\add_metadata\\input_jpg\\input.jpg";

// запрос на загрузку
var downloadRequest = new DownloadFileRequest(file, myStorage);

Stream downloadResponse = fileApi.DownloadFile(downloadRequest);
using (var fileStream = File.Create("C:\\Files\\input.jpg"))
{
    downloadResponse.Seek(0, SeekOrigin.Begin);
    downloadResponse.CopyTo(fileStream);
}

Обновить метаданные изображения с помощью C#

Вы можете программно обновить метаданные изображения JPEG, выполнив шаги, указанные ниже.

  • Создайте экземпляр MetadataApi
  • Установите путь к файлу изображения JPEG в модели FileInfo.
  • Определите SetOptions
  • Установите NewValue и SearchCriteria для свойства с помощью модели SetProperty.
  • Создайте SetRequest с помощью SetOptions
  • Получите результаты, вызвав метод MetadataApi.Set().

В следующем примере кода показано, как установить метаданные изображения JPEG с помощью REST API. Пожалуйста, следуйте шагам, упомянутым ранее, чтобы загрузить и скачать файл.

// инициализация API
var apiInstance = new MetadataApi(configuration);

// путь к входному изображению
var fileInfo = new GroupDocs.Metadata.Cloud.Sdk.Model.FileInfo
{
    FilePath = "input.jpg"
};

// определить параметры набора метаданных
var options = new SetOptions
{
    FileInfo = fileInfo,
    Properties = new List<SetProperty>
    {
        new SetProperty
        {
            NewValue = "Copyright 2021",
            SearchCriteria = new SearchCriteria
            {
                TagOptions = new TagOptions
                {
                    PossibleName = "Copyright"
                }
            },
            Type = "String"
        }
    }
};

// запрос на обновление
var request = new SetRequest(options);
var response = apiInstance.Set(request);
Обновление метаданных изображений с помощью REST API на C#

Обновление метаданных изображений с помощью REST API на C#

Удалить метаданные из изображения с помощью C#

Вы можете программно удалить метаданные из изображения JPEG, выполнив шаги, указанные ниже.

  • Создайте экземпляр MetadataApi
  • Установите путь к файлу изображения JPEG в модели FileInfo.
  • Определить RemoveOptions
  • Задайте критерии поиска
  • Создайте RemoveRequest с помощью RemoveOptions
  • Получите результаты, вызвав метод MetadataApi.Remove().

В следующем примере кода показано, как удалить метаданные из изображения JPEG с помощью REST API. Пожалуйста, следуйте шагам, упомянутым ранее, чтобы загрузить и скачать файл.

// инициализация API
var apiInstance = new MetadataApi(configuration);

// путь к входному изображению
var fileInfo = new GroupDocs.Metadata.Cloud.Sdk.Model.FileInfo
{
    FilePath = "input.jpg"
};

// определить параметры удаления метаданных
var options = new RemoveOptions
{
    FileInfo = fileInfo,
    SearchCriteria = new SearchCriteria
    {
        TagOptions = new TagOptions
        {
            PossibleName = "Copyright"
        }
    }
};

// удалить запрос
var request = new RemoveRequest(options);
var response = apiInstance.Remove(request);
Удалить метаданные из изображений с помощью REST API в C#

Удалить метаданные из изображений с помощью REST API в C#

Извлечение метаданных из изображения с помощью C#

Вы можете программно извлечь метаданные из изображения JPEG, выполнив шаги, указанные ниже.

  • Создайте экземпляр MetadataApi
  • Установите путь к файлу изображения JPEG в модели FileInfo.
  • Определить параметры извлечения
  • Создайте ExtractRequest с ExtractOptions
  • Получите результаты, вызвав метод MetadataApi.Extract().

В следующем примере кода показано, как извлечь метаданные из изображения JPEG с помощью REST API. Чтобы загрузить файл, выполните указанные выше действия.

// инициализация API
var apiInstance = new MetadataApi(configuration);

// исходный файл
var fileInfo = new GroupDocs.Metadata.Cloud.Sdk.Model.FileInfo
{
    FilePath = "input.jpg"
};

// извлечь опции
var options = new ExtractOptions
{
    FileInfo = fileInfo
};

// извлечь запрос
var request = new ExtractRequest(options);
var response = apiInstance.Extract(request);

// извлеченные метаданные
if (response.MetadataTree.InnerPackages != null)
{
    var innerPackages = response.MetadataTree.InnerPackages;
   for (int i = 0; i < innerPackages.Count; i++)
    {
        Console.WriteLine($"\nPackage: {innerPackages[i].PackageName}");
        var packageProperties = innerPackages[i].PackageProperties;
       for (int j = 0; j < packageProperties.Count; j++)
        {
            Console.WriteLine(packageProperties[j].Name + " : " + packageProperties[j].Value);
        }
    }
}
Метаданные изображения

Метаданные изображения

Приведенный выше пример кода выдаст следующий результат:

Package: FileFormat
FileFormat : 9
MimeType : image/jpeg
ByteOrder : 1
Width : 480
Height : 360

Package: Xmp
http://ns.microsoft.com/photo/1.0/ :

Package: Exif
Exif.GpsIfd :
Exif.ExifIfd :
Make : Canon
Model : Canon PowerShot S40
Orientation : System.Int32[]
XResolution : System.Double[]
YResolution : System.Double[]
ResolutionUnit : System.Int32[]
DateTime : 2003:12:14 12:01:44
YCbCrPositioning : System.Int32[]
ExifIfd : System.Int64[]
Exif.Thumbnail : System.Byte[] 

Попробуйте онлайн

Пожалуйста, попробуйте следующий бесплатный онлайн-инструмент для обработки метаданных JPEG, разработанный с использованием вышеуказанного API. https://products.groupdocs.app/metadata/jpeg

Заключение

В этой статье вы узнали, как добавлять, редактировать, удалять и извлекать метаданные из изображений в облаке. В этой статье также объясняется, как программно загрузить файл изображения JPEG в облако и загрузить его из облака. Вы можете узнать больше о GroupDocs.Metadata Manipulation Cloud API, используя документацию. Мы также предоставляем раздел Справочник по API, который позволяет визуализировать наши API и взаимодействовать с ними непосредственно через браузер. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на форуме.

Смотрите также