Método Image::GetAllPropertyItems (gdiplusheaders.h)

O método Image::GetAllPropertyItems obtém todos os itens de propriedade (metadados) armazenados neste objeto Image .

Sintaxe

Status GetAllPropertyItems(
  [in]  UINT         totalBufferSize,
  [in]  UINT         numProperties,
  [out] PropertyItem *allItems
);

Parâmetros

[in] totalBufferSize

Tipo: UINT

Inteiro que especifica o tamanho, em bytes, do buffer allItems . Chame o método Image::GetPropertySize para obter o tamanho necessário.

[in] numProperties

Tipo: UINT

Inteiro que especifica o número de propriedades na imagem. Chame o método Image::GetPropertySize para obter esse número.

[out] allItems

Tipo: PropertyItem*

Ponteiro para uma matriz de objetos PropertyItem que recebe os itens de propriedade.

Valor retornado

Tipo: Status

Se o método for bem-sucedido, ele retornará Ok, que é um elemento da enumeração Status .

Se o método falhar, ele retornará um dos outros elementos da enumeração Status .

Comentários

Alguns arquivos de imagem contêm metadados que você pode ler para determinar os recursos da imagem. Por exemplo, uma fotografia digital pode conter metadados que você pode ler para determinar a marca e modelo da câmera usada para capturar a imagem.

O GDI+ armazena uma parte individual dos metadados em um objeto PropertyItem . O método Image::GetAllPropertyItems retorna uma matriz de objetos PropertyItem . Antes de chamar Image::GetAllPropertyItems, você deve alocar um buffer grande o suficiente para receber essa matriz. Você pode chamar o método Image::GetPropertySize de um objeto Image para obter o tamanho, em bytes, do buffer necessário. O método Image::GetPropertySize também fornece o número de propriedades (partes de metadados) na imagem.

Várias enumerações e constantes relacionadas aos metadados de imagem são definidas em Gdiplusimaging.h.

Exemplos

O exemplo a seguir cria um objeto Image com base em um arquivo JPEG. O código chama o método GetAllPropertyItems desse objeto Image para obter seus itens de propriedade (metadados).

#include <windows.h>
#include <gdiplus.h>
#include <stdio.h>
using namespace Gdiplus;

INT main()
{
   GdiplusStartupInput gdiplusStartupInput;
   ULONG_PTR gdiplusToken;
   GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

   // Create an Image object based on a JPEG file.
   Image* image = new Image(L"FakePhoto.jpg"); 

   // Find out how many property items are in the image, and find out the
   // required size of the buffer that will receive those property items.
   UINT totalBufferSize;
   UINT numProperties;
   image->GetPropertySize(&totalBufferSize, &numProperties);

   // Allocate the buffer that will receive the property items.
   PropertyItem* pAllItems = (PropertyItem*)malloc(totalBufferSize);

   // Fill the buffer.
   image->GetAllPropertyItems(totalBufferSize, numProperties, pAllItems);

// Print the id data member of each property item.
   for(UINT j = 0; j < numProperties; ++j)
   {
      printf("%x\n", pAllItems[j].id);
   }

   free(pAllItems);
   delete image;
   GdiplusShutdown(gdiplusToken);
   return 0;
}

O código anterior, juntamente com um arquivo específico, FakePhoto.jpg, produziu a seguinte saída:

320
10f
110
9003
829a
5090
5091

A saída anterior mostra um número de ID hexadecimal para cada item de propriedade. Você pode pesquisar esses números de ID em Gdiplusimaging.h e descobrir que eles representam as marcas de propriedade a seguir.

Valor hexadecimal Marca de propriedade
0x0320 PropertyTagImageTitle
0x010f PropertyTagEquipMake
0x0110 PropertyTagEquipModel
0x9003 PropertyTagExifDTOriginal
0x829a PropertyTagExifExposureTime
0x5090 PropertyTagLuminanceTable
0x5091 PropertyTagChrominanceTable
 

Requisitos

   
Cliente mínimo com suporte Windows XP, Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho gdiplusheaders.h (inclua Gdiplus.h)
Biblioteca Gdiplus.lib
DLL Gdiplus.dll

Confira também

Imagem

Image::GetPropertyCount

Image::GetPropertyIdList

Image::GetPropertyItem

Image::GetPropertyItemSize

Image::GetPropertySize

Image::RemovePropertyItem

Image::SetPropertyItem

PropertyItem

Leitura e gravação de metadados