Image::GetAllPropertyItems 方法 (gdiplusheaders.h)

Image::GetAllPropertyItems 方法获取存储在此 Image 对象中的所有属性项 (元数据) 。

语法

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

parameters

[in] totalBufferSize

类型: UINT

指定 allItems 缓冲区的大小(以字节为单位)的整数。 调用 Image::GetPropertySize 方法以获取所需的大小。

[in] numProperties

类型: UINT

指定图像中属性数的整数。 调用 Image::GetPropertySize 方法以获取此数字。

[out] allItems

类型: PropertyItem*

指向接收属性项的 PropertyItem 对象的数组的指针。

返回值

类型: 状态

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

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

注解

某些图像文件包含可以读取以确定图像特征的元数据。 例如,数码照片可能包含可以读取以确定用于捕获图像的相机的品牌和型号。

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

Gdiplusimaging.h 中定义了多个与图像元数据相关的枚举和常量。

示例

以下示例基于 JPEG 文件创建 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 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

前面的输出显示每个属性项的十六进制 ID 号。 可以在 Gdiplusimaging.h 中查找这些 ID 号,并发现它们表示以下属性标记。

十六进制值 属性标记
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::GetPropertyCount

Image::GetPropertyIdList

Image::GetPropertyItem

Image::GetPropertyItemSize

Image::GetPropertySize

Image::RemovePropertyItem

Image::SetPropertyItem

PropertyItem

读取和写入元数据