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 |