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


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

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

Синтаксис

Status GetPropertySize(
  [out] UINT *totalBufferSize,
  [out] UINT *numProperties
);

Параметры

[out] totalBufferSize

Тип: UINT*

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

[out] numProperties

Тип: UINT*

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

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

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

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

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

Комментарии

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

Примеры

В следующем примере создается объект Image на основе JPEG-файла. Код вызывает метод Image::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 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 PropertyTagExif ExposureTime
0x5090 PropertyTagLuminanceTable
0x5091 PropertyTagChrominanceTable
 

Требования

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

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

Изображение

Image::GetAllPropertyItems

Image::GetPropertyCount

Image::GetPropertyIdList

Image::GetPropertyItem

Image::GetPropertyItemSize

Image::RemovePropertyItem

Image::SetPropertyItem

PropertyItem

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