Поделиться через


Метод Image::GetAllPropertyItems (gdiplusheaders.h)

Метод Image::GetAllPropertyItems получает все элементы свойств (метаданные), хранящиеся в этом объекте Image .

Синтаксис

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

Параметры

[in] totalBufferSize

Тип: UINT

Целое число, указывающее размер (в байтах) буфера allItems . Вызовите метод Image::GetPropertySize , чтобы получить необходимый размер.

[in] numProperties

Тип: UINT

Целое число, указывающее количество свойств на изображении. Вызовите метод Image::GetPropertySize , чтобы получить это число.

[out] allItems

Тип: PropertyItem*

Указатель на массив объектов PropertyItem , который получает элементы свойств.

Возвращаемое значение

Тип: Состояние

В случае успешного выполнения метода возвращается ОК, который является элементом перечисления Status .

Если метод завершается сбоем, он возвращает один из других элементов перечисления Status .

Комментарии

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

GDI+ сохраняет отдельный фрагмент метаданных в объекте PropertyItem . Метод Image::GetAllPropertyItems возвращает массив объектов PropertyItem . Перед вызовом Image::GetAllPropertyItems необходимо выделить буфер, достаточно большой для получения этого массива. Можно вызвать метод Image::GetPropertySize объекта Image , чтобы получить размер требуемого буфера в байтах. Метод Image::GetPropertySize также предоставляет количество свойств (фрагментов метаданных) в изображении.

В Gdiplusimaging.h определено несколько перечислений и констант, связанных с метаданными изображения.

Примеры

В следующем примере создается объект Image на основе JPEG-файла. Код вызывает метод GetAllPropertyItems этого объекта Image для получения его элементов свойств (метаданных).

#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;
}

Приведенный выше код вместе с определенным файлом FakePhoto.jpg выводятся следующие выходные данные:

320
10f
110
9003
829a
5090
5091

В предыдущих выходных данных показан шестнадцатеричный идентификатор для каждого элемента свойства. Вы можете найти эти идентификаторы в Gdiplusimaging.h и узнать, что они представляют следующие теги свойств.

Шестнадцатеричное значение Тег свойства
0x0320 PropertyTagImageTitle
0x010f PropertyTagEquipMake
0x0110 PropertyTagEquipModel
0x9003 PropertyTagExifDTOriginal
0x829a PropertyTagExifExposureTime
0x5090 PropertyTagLuminanceTable
0x5091 PropertyTagChrominanceTable
 

Требования

   
Минимальная версия клиента Windows XP, Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header gdiplusheaders.h (включая Gdiplus.h)
Библиотека Gdiplus.lib
DLL Gdiplus.dll

См. также раздел

Изображение

Image::GetPropertyCount

Image::GetPropertyIdList

Image::GetPropertyItem

Image::GetPropertyItemSize

Image::GetPropertySize

Image::RemovePropertyItem

Image::SetPropertyItem

PropertyItem

Чтение и запись метаданных