Extrair metadados de imagens usando C#

Você pode adicionar, editar, remover ou extrair detalhes da imagem, como altura, largura, marca, modelo, etc. armazenados na forma de metadados programaticamente. Como desenvolvedor C#, você pode facilmente extrair e manipular as informações de metadados de imagens programaticamente na nuvem. Neste artigo, você aprenderá como extrair e manipular os metadados de imagens usando uma API REST em C#.

Os seguintes tópicos são discutidos/cobertos neste artigo:

API REST de manipulação de metadados de documentos e SDK .NET

Para manipular os metadados das imagens JPEG, usarei a API .NET SDK do GroupDocs.Metadata Cloud. Ele permite adicionar, editar, recuperar e remover propriedades de metadados de documentos e formatos de arquivo de imagem. Você só precisa definir os critérios de pesquisa e a API Cloud REST de metadados cuidará das operações de metadados especificadas em formatos de arquivo suportados. Ele também fornece Java SDK como seus membros da família de manipulação de metadados de documentos para a Cloud API.

Você pode instalar GroupDocs.Metadata em seu projeto do Visual Studio a partir do Gerenciador de Pacotes NuGet ou usando o seguinte comando no console do Gerenciador de Pacotes:

Install-Package GroupDocs.Metadata-Cloud

Obtenha seu ID de cliente e Segredo do cliente no painel antes de começar a seguir as etapas e os exemplos de código disponíveis. Depois de ter seu ID de cliente e segredo, adicione o código conforme mostrado abaixo:

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

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

Adicionar metadados a imagens usando uma API REST em C#

Você pode adicionar metadados às imagens seguindo as etapas simples abaixo:

Carregue a imagem

Em primeiro lugar, carregue o arquivo JPEG na nuvem usando o exemplo de código abaixo:

// inicialização da 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();
}

Como resultado, o arquivo de imagem JPEG carregado estará disponível na seção de arquivos do seu painel na nuvem.

Adicionar metadados à imagem usando C#

Você pode adicionar metadados à imagem JPEG programaticamente seguindo as etapas abaixo.

  • Crie uma instância de MetadataApi
  • Defina o caminho do arquivo de imagem JPEG no modelo FileInfo
  • Definir AddOptions
  • Defina Value e SearchCriteria para a propriedade usando o modelo AddProperty
  • Criar AddRequest com AddOptions
  • Obtenha resultados chamando o método MetadataApi.Add()

O exemplo de código a seguir mostra como adicionar metadados a uma imagem JPEG usando uma API REST.

// inicialização da API
var apiInstance = new MetadataApi(configuration);

// caminho da imagem de entrada
var fileInfo = new GroupDocs.Metadata.Cloud.Sdk.Model.FileInfo
{
    FilePath = "input.jpg"
};

// definir opções de adição de metadados
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"
                }
            },
        }
    }
};

// adicionar solicitação
var request = new AddRequest(options);
var response = apiInstance.Add(request);
Adicionar metadados de imagens usando uma API REST em C#

Adicionar metadados de imagens usando uma API REST em C#

Baixe a imagem

Os exemplos de código acima salvarão o arquivo JPEG atualizado na nuvem e poderão ser baixados usando o seguinte exemplo de código:

// inicialização da API
var fileApi = new FileApi(configuration);

// caminho padrão
var file = "metadata\\add_metadata\\input_jpg\\input.jpg";

// solicitação de download
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);
}

Atualizar metadados de imagem usando C#

Você pode atualizar os metadados da imagem JPEG programaticamente seguindo as etapas abaixo.

  • Crie uma instância de MetadataApi
  • Defina o caminho do arquivo de imagem JPEG no modelo FileInfo
  • Definir as opções de configuração
  • Defina NewValue e SearchCriteria para a propriedade usando o modelo SetProperty
  • Criar SetRequest com SetOptions
  • Obtenha resultados chamando o método MetadataApi.Set()

O exemplo de código a seguir mostra como definir metadados de uma imagem JPEG usando uma API REST. Siga as etapas mencionadas anteriormente para fazer upload e download de um arquivo.

// inicialização da API
var apiInstance = new MetadataApi(configuration);

// caminho da imagem de entrada
var fileInfo = new GroupDocs.Metadata.Cloud.Sdk.Model.FileInfo
{
    FilePath = "input.jpg"
};

// definir opções de conjunto de metadados
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"
        }
    }
};

// pedido de atualização
var request = new SetRequest(options);
var response = apiInstance.Set(request);
Atualizar metadados de imagens usando uma API REST em C#

Atualizar metadados de imagens usando uma API REST em C#

Remover metadados da imagem usando C#

Você pode remover metadados da imagem JPEG programaticamente seguindo as etapas abaixo.

  • Crie uma instância de MetadataApi
  • Defina o caminho do arquivo de imagem JPEG no modelo FileInfo
  • Definir opções de remoção
  • Defina os critérios de pesquisa
  • Criar RemoveRequest com RemoveOptions
  • Obtenha resultados chamando o método MetadataApi.Remove()

O exemplo de código a seguir mostra como remover metadados de uma imagem JPEG usando uma API REST. Siga as etapas mencionadas anteriormente para fazer upload e download de um arquivo.

// inicialização da API
var apiInstance = new MetadataApi(configuration);

// caminho da imagem de entrada
var fileInfo = new GroupDocs.Metadata.Cloud.Sdk.Model.FileInfo
{
    FilePath = "input.jpg"
};

// definir opções de remoção de metadados
var options = new RemoveOptions
{
    FileInfo = fileInfo,
    SearchCriteria = new SearchCriteria
    {
        TagOptions = new TagOptions
        {
            PossibleName = "Copyright"
        }
    }
};

// remover pedido
var request = new RemoveRequest(options);
var response = apiInstance.Remove(request);
Remover metadados de imagens usando uma API REST em C#

Remover metadados de imagens usando uma API REST em C#

Extrair metadados de imagem usando C#

Você pode extrair os metadados da imagem JPEG programaticamente seguindo as etapas abaixo.

  • Crie uma instância de MetadataApi
  • Defina o caminho do arquivo de imagem JPEG no modelo FileInfo
  • Definir opções de extração
  • Criar ExtractRequest com ExtractOptions
  • Obtenha resultados chamando o método MetadataApi.Extract()

O exemplo de código a seguir mostra como extrair metadados de uma imagem JPEG usando uma API REST. Siga as etapas mencionadas anteriormente para fazer upload de um arquivo.

// inicialização da API
var apiInstance = new MetadataApi(configuration);

// arquivo fonte
var fileInfo = new GroupDocs.Metadata.Cloud.Sdk.Model.FileInfo
{
    FilePath = "input.jpg"
};

// extrair opções
var options = new ExtractOptions
{
    FileInfo = fileInfo
};

// solicitação de extração
var request = new ExtractRequest(options);
var response = apiInstance.Extract(request);

// metadados extraídos
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);
        }
    }
}
Metadados da imagem

Metadados da imagem

O exemplo de código acima produzirá a seguinte saída:

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[] 

Experimente on-line

Experimente a seguinte ferramenta on-line gratuita de manipulação de metadados JPEG, que é desenvolvida usando a API acima. https://products.groupdocs.app/metadata/jpeg

Conclusão

Neste artigo, você aprendeu como adicionar, editar, remover e extrair metadados de imagens na nuvem. Este artigo também explicou como carregar programaticamente um arquivo de imagem JPEG na nuvem e baixá-lo da nuvem. Você pode aprender ainda mais sobre GroupDocs.Metadata Manipulation Cloud API usando a documentação. Também fornecemos uma seção Referência de API que permite visualizar e interagir com nossas APIs diretamente pelo navegador. Em caso de ambiguidade, sinta-se à vontade para nos contatar no fórum.

Veja também