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 |