Image::GetPropertyIdList 方法 (gdiplusheaders.h)
Image::GetPropertyIdList 方法获取此 Image 对象的元数据中使用的属性标识符的列表。
语法
Status GetPropertyIdList(
[in] UINT numOfProperty,
[out] PROPID *list
);
参数
[in] numOfProperty
类型: UINT
指定 列表 数组中的元素数的整数。 调用 Image::GetPropertyCount 方法以确定此数字。
[out] list
类型: PROPID*
指向接收属性标识符的数组的指针。
返回值
类型: 状态
如果该方法成功,则返回 Ok,这是 Status 枚举的元素。
如果方法失败,它将返回 Status 枚举的其他元素之一。
注解
Image::GetPropertyIdList 方法返回 PROPID数组。 在调用 Image::GetPropertyIdList 之前,必须分配一个足够大的缓冲区来接收该数组。 可以调用 Image 对象的 Image::GetPropertyCount 方法来确定所需缓冲区的大小。 缓冲区的大小应为 Image::GetPropertyCount 的返回值乘以 sizeof ( PROPID) 。
示例
以下示例基于 JPEG 文件创建 Image 对象。 代码调用该 Image 对象的 Image::GetPropertyIdList 方法,以找出图像中存储的元数据类型。
#include <windows.h>
#include <gdiplus.h>
#include <stdio.h>
using namespace Gdiplus;
INT main()
{
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
UINT count = 0;
Image* image = new Image(L"FakePhoto.jpg");
// How many types of metadata are in the image?
count = image->GetPropertyCount();
if(count == 0)
return 0;
// Allocate a buffer to receive an array of PROPIDs.
PROPID* propIDs = new PROPID[count];
image->GetPropertyIdList(count, propIDs);
// List the retrieved IDs.
for(UINT j = 0; j < count; ++j)
printf("%x\n", propIDs[j]);
delete [] propIDs;
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 |