Метод 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 |