Image::GetPropertySize 方法 (gdiplusheaders.h)

Image::GetPropertySize 方法获取此 Image 对象中存储的所有属性项的总大小(以字节为单位)。 Image::GetPropertySize 方法还会获取此 Image 对象中存储的属性项数。

语法

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

parameters

[out] totalBufferSize

类型: UINT*

指向接收所有属性项的总大小(以字节为单位)的 UINT 的指针。

[out] numProperties

类型: UINT*

指向接收属性项数的 UINT 的指针。

返回值

类型: 状态

如果该方法成功,则返回 Ok,这是 Status 枚举的元素。

如果方法失败,它将返回 Status 枚举的其他元素之一。

注解

Windows GDI+ 将单个元数据段存储在 PropertyItem 对象中。 Image::GetAllPropertyItems 方法返回 PropertyItem 对象的数组。 在调用 Image::GetAllPropertyItems 之前,必须分配一个足够大的缓冲区来接收该数组。 可以调用 Image 对象的 Image::GetPropertySize 方法来获取所需缓冲区的大小(以字节为单位)。 Image::GetPropertySize 方法还提供图像中元数据) (属性数。

示例

以下示例基于 JPEG 文件创建 Image 对象。 代码调用该Image 对象的 Image::GetAllPropertyItems 方法来获取其属性项 (元数据) 。

#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 PropertyTagExifExposureTime
0x5090 PropertyTagLuminanceTable
0x5091 PropertyTagChrominanceTable
 

要求

   
最低受支持的客户端 Windows XP、Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 gdiplusheaders.h (包括 Gdiplus.h)
Library Gdiplus.lib
DLL Gdiplus.dll

另请参阅

图像

Image::GetAllPropertyItems

Image::GetPropertyCount

Image::GetPropertyIdList

Image::GetPropertyItem

Image::GetPropertyItemSize

Image::RemovePropertyItem

Image::SetPropertyItem

PropertyItem

读取和写入元数据