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 |