本机映像格式元数据查询
本主题概述了用于读取和写入 GIF、PNG、TIFF 和 JPEG 图像支持的元数据的元数据 查询语言 查询。它包括特定于每种图像格式的元数据,以及多种格式支持的元数据。
本主题包含以下各节:
先决条件
若要了解本主题,应熟悉 WINDOWS 图像处理组件 (WIC) 元数据系统,如 WIC 元数据概述中所述。 还应熟悉用于读取和写入元数据的查询语言,如 元数据查询语言概述中所述。
照片元数据策略表达式
除了支持元数据查询语言外, WIC 还接受 Windows 属性系统中的规范属性名称。 WIC 支持与图像格式相关的 Windows 属性命名空间的子集,如 照片元数据策略中所述。 用作 WIC 元数据查询的 Windows 属性称为照片元数据策略表达式。
例如,EXIF 方向标志的照片元数据策略表达式为:
通常,对于 Windows 属性命名空间涵盖的常见图像元数据项,建议对本机元数据查询使用策略表达式。 元数据查询语言最适合需要对特定图像元数据项进行低级别访问的情况,或者适用于 Windows 属性系统不支持的自定义或高级元数据项的情况。 有关详细信息,请参阅 照片元数据策略表达式。
特定于文件格式的元数据
以下部分包含列出每种图像文件类型的可用元数据查询的表。 每个表都具有以下列:
- Path - 用于检索元数据项的查询路径。
- 名称 - 元数据项的名称。
- 类型 - 从查询路径检索的元数据项的类型。 WIC 检索到的元数据以 PROPVARIANT 的形式返回,后者使用 VARTYPE enumeration.on 报告数据类型。
WIC 元数据 API 使用查询路径来访问图像的嵌入元数据。 以下示例代码演示如何使用 IWICMetadataQueryReader 查询 JPEG 的 IFD 元数据块。
// Not shown: image decoding
IWICMetadataQueryReader *pQueryReader = NULL;
IWICMetadataQueryReader *pIFDReader = NULL;
// Get the query reader.
if (SUCCEEDED(hr))
{
hr = pFrameDecode->GetMetadataQueryReader(&pQueryReader);
}
if (SUCCEEDED(hr))
{
// Get the nested IFD reader.
hr = pQueryReader->GetMetadataByName(L"/app1/ifd", &value);
if (value.vt == VT_UNKNOWN)
{
hr = value.punkVal->QueryInterface(IID_IWICMetadataQueryReader, (void **)&pIFDReader);
}
PropVariantClear(&value); // Clear value for new query.
}
GIF 元数据
图形交换格式 (GIF) 图像格式支持全局和帧级元数据。 以下两个部分提供可用于 GIF 的全局和帧级元数据的元数据查询路径。
注意
有关 GIF 元数据的完整列表以及更多详细信息,请参阅 W3C 网站上的 GIF 标准 。
全局元数据
下表提供了可用于访问全局 GIF 元数据的元数据查询路径。
路径 | 名称 | 类型 |
---|---|---|
/commentext 或 /[*]commentext,其中 * = 0 到 N | 注释扩展 | VT_UNKNOWN - 查询读取器/编写器 |
/commentext/TextEntry | VT_LPSTR | |
/logscrdesc | 逻辑屏幕说明 | VT_UNKNOWN - 查询读取器/编写器 |
/logscrdesc/Signature | VT_UI1 |VT_VECTOR | |
/logscrdesc/Width | VT_UI2 | |
/logscrdesc/Height | VT_UI2 | |
/logscrdesc/GlobalColorTableFlag | VT_BOOL | |
/logscrdesc/ColorResolution | VT_UI1 | |
/logscrdesc/SortFlag | VT_BOOL | |
/logscrdesc/GlobalColorTableSize | VT_UI1 | |
/logscrdesc/BackgroundColorIndex | VT_UI1 | |
/logscrdesc/PixelAspectRatio | VT_UI1 | |
/appext 或 /[*]appext,其中 * = 0 到 N | 应用程序扩展 | VT_UNKNOWN - 查询读取器/编写器 |
/appext/Application | VT_UI1 |VT_VECTOR | |
/appext/Data | VT_UI1 |VT_VECTOR |
帧元数据
下表提供了可用于访问帧级 GIF 元数据的元数据查询路径。
路径 | 名称 | 类型 |
---|---|---|
/grctlext | 图形控件扩展 | VT_UNKNOWN - 查询读取器/编写器 |
/grctlext/Disposal | VT_UI1 | |
/grctlext/UserInputFlag | VT_BOOL | |
/grctlext/TransparencyFlag | VT_BOOL | |
/grctlext/Delay | VT_UI2 | |
/grctlext/TransparentColorIndex | VT_UI1 | |
/imgdesc | 图像描述符 | VT_UNKNOWN - 查询读取器/编写器 |
/imgdesc/Left | VT_UI2 | |
/imgdesc/Top | VT_UI2 | |
/imgdesc/Width | VT_UI2 | |
/imgdesc/Height | VT_UI2 | |
/imgdesc/LocalColorTableFlag | VT_BOOL | |
/imgdesc/InterlaceFlag | VT_BOOL | |
/imgdesc/SortFlag | VT_BOOL | |
/imgdesc/LocalColorTableSize | VT_UI1 |
PNG 元数据
可移植网络图形 (PNG) 图像格式支持帧级元数据。
注意
有关 PNG 元数据的完整列表以及更多详细信息,请参阅 W3C 网站上的 PNG 标准 。
帧元数据
下表提供了可用于访问帧级别 PNG 元数据的可用元数据查询路径。
路径 | 名称 | 类型 |
---|---|---|
/tEXt 或 /[*]tEXt,其中 * = 0 到 N | 文本区块 | VT_UNKNOWN - tEXt 查询读取器/编写器 |
/tEXt/{str=*} 其中 * = 标识文本关键字 (keyword) | VT_LPSTR | |
/gAMA | Gama Chunk | VT_UNKNOWN - gAMA 查询读取器/编写器 |
/gAMA/ImageGamma | VT_UI4 | |
/iTXt 或 /[*]iTXt,其中 * = 0 到 N | IText 区块 | VT_UNKNOWN - iTXt 查询读取器/编写器 |
/iTXt/Keyword | VT_LPSTR | |
/iTXt/CompressionFlag | VT_UI1 | |
/iTXt/LanguageTag | LPSTR | |
/iTXt/TranslatedKeyword | LPWSTR | |
/iTXt/TextEntry | LPWSTR | |
/cHRM | HRM 区块 | VT_UNKNOWN - cHRM 查询读取器/编写器 |
/cHRM/WhitePointX | VT_UI4 | |
/cHRM/WhitePointY | VT_UI4 | |
/cHRM/RedX | VT_UI4 | |
/cHRM/RedY | VT_UI4 | |
/cHRM/GreenX | VT_UI4 | |
/cHRM/GreenY | VT_UI4 | |
/cHRM/BlueX | VT_UI4 | |
/cHRM/BlueY | VT_UI4 | |
/Srgb | sRGB Chuck | VT_UNKNOWN - sRGB 查询读取器/编写器 |
/sRGB/RenderingIntent | VT_UI1 | |
/时间 | 时间区块 | VT_UNKNOWN - tIME 查询读取器/编写器 |
/tIME/Year | VT_UI2 | |
/tIME/Month | VT_UI1 | |
/tIME/Day | VT_UI1 | |
/tIME/Hour | VT_UI1 | |
/tIME/Minute | VT_UI1 | |
/tIME/Second | VT_UI1 | |
/bKGD | 后台区块 | VT_UNKNOWN - bKGB 查询读取器/编写器 |
/bKGD/BackgroundColor | VT_UI1、VT_UI2或VT_UI2 |VT_VECTOR | |
/历史 | hIST 区块 | VT_UNKNOWN - hIST 查询读取器/编写器 |
/hIST/频率 | VT_VECTOR |VT_UI2 | |
/iCCP | iCCP 区块 | VT_UNKNOWN - iCCP 查询读取器/编写器 |
/iCCP/ProfileName | VT_LPSTR | |
/iCCP/ProfileData | VT_VECTOR |VT_UI1 |
TIFF 元数据
标记图像文件格式 (TIFF) 图像格式支持帧级元数据。
注意
有关 TIFF 元数据的完整列表以及更多详细信息,请参阅 TIFF 标准。
帧元数据
下表提供了可用于访问帧级别 TIFF 元数据的元数据查询路径。
路径 | 名称 | 类型 |
---|---|---|
/ifd | 0 IFD | VT_UNKNOWN - 查询读取器/编写器 |
/ifd/{ushort=*} 其中 * = 0 到 65535 | IFD 按 ID 输入 | 变量 |
/ifd/thumb 或 /ifd/{ushort=330} | 缩略图 IFD | VT_UNKNOWN - 查询读取器/编写器 |
/ifd/xmp 或 /ifd/{ushort=700} | XMP | VT_UNKNOWN - 查询读取器/编写器 |
/ifd/exif 或 /ifd/{ushort=34665} | Exif | VT_UNKNOWN - 查询读取器/编写器 |
/ifd/gps 或 /ifd/{ushort=34853} | GPS | VT_UNKNOWN - 查询读取器/编写器 |
/ifd/exif/interop or /ifd/exif/{ushort=40965} | Interop | VT_UNKNOWN - 查询读取器/编写器 |
/ifd/iptc or /ifd/{ushort=33723} | IPTC | VT_UNKNOWN - 查询读取器/编写器 |
/ifd/iptc/{str=*} 其中 * = IPTC 关键字 (keyword) | IPTC 条目 | 变量 |
/ifd/irb/8bimiptc/iptc | IPTC | VT_UNKNOWN - 查询读取器/编写器 |
/ifd/irb/8bimiptc/iptc/{str=*} | IPTC 条目 | 变量 |
JPEG 元数据
JPEG 图像格式支持帧级元数据。
注意
有关 JPEG 元数据的完整列表以及更多详细信息,请参阅 EXIF JPEG 标准。
帧元数据
下表提供了可用于访问帧级别 JPEG 元数据的元数据查询路径。
路径 | 名称 | 类型 |
---|---|---|
/app0 | App0 | VT_UNKNOWN - App0 查询读取器/编写器 |
/app0/{ushort=0} | 版本 | VT_UI2 |
/app0/{ushort=1} | 单元 | VT_UI1 |
/app0/{ushort=2} | DpiX | VT_UI2 |
/app0/{ushort=3} | DpiY | VT_UI2 |
/app0/{ushort=4} | Xthumbnail | VT_UI1 |
/app0/{ushort=5} | Ythumbnail | VT_UI1 |
/app0/{ushort=6} | ThumbnailData | VT_BLOB |
/app1 | App1 | VT_UNKNOWN - App1 查询读取器/编写器 |
/app1/ifd 或 /app1/{ushort=0} | 0 IFD | VT_UNKNOWN - IFD 查询读取器/编写器 |
/app1/ifd/exif or /app1/ifd/{ushort=34665} | EXIF IFD | VT_UNKNOWN - EXIF 查询读取器/编写器 |
/app1/thumb 或 /app1/{ushort=1} | 缩略图 IFD | VT_UNKNOWN - SubIFD 查询读取器/编写器 |
/app13 | App13 | VT_UNKNOWN - App13 查询读取器/编写器 |
/app13/irb 或 /app13/{ushort=0} | Irb | VT_UNKNOWN - IRB 查询读取器/编写器 |
/app13/irb/{ulonglong=*} 其中 * = IRB 标识符 (请参阅 IRB 规范) | IRB 条目 | VT_UNKNOWN - 未知查询读取器/编写器 |
/app13/irb/{ulonglong=*}/{} | IRB 条目内容 | VT_BLOB |
/app13/irb/8bimiptc 或 /app13/irb/{ulonglong=61857348781060} | 8BIMIPTC | VT_UNKNOWN - 8BIMIPTC 查询读取器/编写器 |
/app13/irb/8bimiptc/iptc | IPTC | VT_UNKNOWN - IPTC 查询读取器/编写器 |
/app13/irb/8bimiptc/iptc/{str=*} | IPTC 条目 | 变量 |
/app13/irb/8bimResInfo 或 /app13/irb/{ulonglong=61857348781037} | 8BIM 分辨率信息 | VT_UNKNOWN - 查询读取器/编写器 |
/app13/irb/8bimResInfo/PString | VT_LPSTR | |
/app13/irb/8bimResInfo/HResolution | VT_UI4 | |
/app13/irb/8bimResInfo/VResolution | VT_UI4 | |
/app13/irb/8bimResInfo/WidthUnit | VT_UI2 | |
/app13/irb/8bimResInfo/HeightUnit | VT_UI2 | |
/app13/irb/8bimResInfo/HResolutionUnit | VT_UI2 | |
/app13/irb/8bimResInfo/VResolutionUnit | VT_UI2 | |
/Com | JPEG 注释 | VT_UNKNOWN - 注释查询读取器/编写器 |
/com/TextEntry | LPSTR | |
/亮度 | 亮度 | VT_UNKNOWN - 亮度查询读取器/编写器 |
/luminance/TableEntry | VT_UI1 |VT_VECTOR | |
/色度 | 色度 | VT_UNKNOWN - Chrominance 查询读取器/编写器 |
/chrominance/TableEntry | VT_UI1 |VT_VECTOR | |
/xmp | XMP | VT_UNKNOWN - XMP 查询读取器/编写器 |
独立于文件格式的元数据
以下部分包含有关多种图像格式支持的元数据格式的信息。 每个表都具有以下列:
- 相对路径 - 用于检索元数据项(相对于元数据块)的查询路径。
- 名称 - 元数据项的名称。
- 类型 - 从查询路径检索的元数据项的类型。 WIC 检索到的元数据以 PROPVARIANT 的形式返回,后者使用 VARTYPE 枚举报告数据类型。
注意
此处的表仅提供访问特定元数据格式中的元数据项的相对路径。 若要获取完全限定的元数据查询,请将此相对路径追加到特定元数据格式的元数据块查询中。
例如,若要访问 JPEG 文件中的 “方向” 标志,请使用以下表达式:
- /app1/ifd/{ushort=274}
在 TIFF 文件中,使用以下表达式:
- /ifd/{ushort=274}
在此示例中,请注意,不同的图像格式可能以不同的方式存储特定元数据块,因此用于访问特定元数据项的完全限定元数据查询可能是特定于图像格式的。 请参阅每种格式的表,查找访问特定元数据块的相应元数据查询。
IFD 元数据
IFD 或图像文件目录是在 TIFF 标准中定义的可包含图像元数据的数据结构。 它使用 ushort 类型的标记标识每个元数据项。 JPEG、TIFF 和 JPEG-XR 支持 IFD 元数据。 第三方格式(如某些相机原始格式)可能也支持 IFD 元数据。
此处的表提供了用于访问某些常用 IFD 元数据项的相对元数据查询路径。 IFD 数据结构允许第三方扩展性,此表并非详尽列表。 有关详细信息,请参阅 TIFF 标准。
注意
尽管 JPEG 和其他格式支持 IFD 数据结构,但它们可能不会使用它定义的所有元数据项。 有关详细信息,请参阅每种格式的标准。
注意
此处表中的某些元数据项需要其他解释或信息才能正确使用,请参阅 TIFF 标准。 例如, PhotometricInterpretation 元数据项返回类型为 VT_UI2 的 PROPVARIANT。 但是,根据 TIFF 标准,它被解释为枚举。 有关详细信息,请参阅 TIFF 标准。
相对路径 | 名称 | 类型 |
---|---|---|
/{ushort=256} | ImageWidth | VT_UI2或VT_UI4 |
/{ushort=257} | ImageLength | VT_UI2或VT_UI4 |
/{ushort=258} | BitsPerSample | VT_UI2 |
/{ushort=259} | 压缩 | VT_UI2 |
/{ushort=262} | PhotometricInterpretation | VT_UI2 |
/{ushort=274} | 方向 | VT_UI2 |
/{ushort=277} | SamplesPerPixel | VT_UI2 |
/{ushort=284} | PlanarConfiguration | VT_UI2 |
/{ushort=530} | YCbCrSubSampling | VT_VECTOR |VT_UI2 |
/{ushort=531} | YCbCrPositioning | VT_UI2 |
/{ushort=282} | XResolution | VT_UI8 |
/{ushort=283} | YResolution | VT_UI8 |
/{ushort=296} | ResolutionUnit | VT_UI2 |
/{ushort=306} | DateTime | VT_LPSTR |
/{ushort=270} | ImageDescription | VT_LPSTR |
/{ushort=271} | 制造商 | VT_LPSTR |
/{ushort=272} | 型号 | VT_LPSTR |
/{ushort=305} | 软件 | VT_LPSTR |
/{ushort=315} | 艺术家 | VT_LPSTR |
/{ushort=33432} | 版权信息 | VT_LPSTR |
/{ushort=338} | ExtraSamples | VT_UI2 |
/{ushort=254} | NewSubfileType | VT_UI4 |
/{ushort=278} | RowsPerStrip | VT_UI2或VT_UI4 |
/{ushort=279} | StripByteCounts | VT_VECTOR |VT_UI2或VT_VECTOR |VT_UI4 |
/{ushort=273} | StripOffsets | VT_VECTOR |VT_UI2或VT_VECTOR |VT_UI4 |
EXIF 元数据
EXIF 元数据定义为 EXIF JPEG 规范的一部分。 EXIF 元数据基于 TIFF 标准中定义的 IFD 数据结构,并提供其他属性,例如有关用于创建图像的设备和照片属性的信息。 它使用 ushort 类型的标记标识每个元数据项。 JPEG、TIFF 和 JPEG-XR 支持 EXIF 元数据。 第三方格式(例如某些相机原始格式)可能也支持 EXIF 元数据。
下表提供了用于访问一些常用 EXIF 元数据项的相对元数据查询路径。 EXIF 数据结构允许第三方扩展性,此表不是详尽列表;有关详细信息,请参阅 EXIF 标准。
注意
许多 EXIF 元数据项在 EXIF 标准中定义为类型“RATIONAL”或“SRATIONAL”。 “RATIONAL”由分子和分母组成,这两者都是 32 位无符号整数。 分子包含在高 32 位中,分母包含在低 32 位中。 在 WIC 中,它们返回为 PROPVARIANT,类型分别为VT_UI8或VT_I8;实际值分别存储为ULARGE_INTEGER或LARGE_INTEGER。 若要访问分子和分母,请阅读ULARGE_INTEGER或LARGE_INTEGER值的 HighPart 和 LowPart 成员。
注意
下表中的某些元数据项需要其他解释或信息才能正确使用。 例如, ColorSpace 元数据项返回类型为 VT_UI2 的 PROPVARIANT。 但是,根据 EXIF 标准,它被解释为枚举。 有关详细信息,请参阅 EXIF 标准。
相对路径 | 名称 | 类型 |
---|---|---|
/{ushort=36864} | ExifVersion | VT_BLOB |
/{ushort=40960} | FlashpixVersion | VT_BLOB |
/{ushort=40961} | ColorSpace | VT_UI2 |
/{ushort=40962} | PixelXDimension | VT_UI2或VT_UI4 |
/{ushort=40963} | PixelYDimension | VT_UI2或VT_UI4 |
/{ushort=37500} | MakerNote | VT_BLOB |
/{ushort=37510} | UserComment | VT_LPWSTR |
/{ushort=36867} | DateTimeOriginal | VT_LPSTR |
/{ushort=36868} | DateTimeDigitized | VT_LPSTR |
/{ushort=42016} | ImageUniqueID | VT_LPSTR |
/{ushort=42032} | CameraOwnerName | VT_LPSTR |
/{ushort=42033} | BodySerialNumber | VT_LPSTR |
/{ushort=42034} | LensSpecification | VT_VECTOR |VT_UI8 |
/{ushort=42035} | LensMake | VT_LPSTR |
/{ushort=42036} | LensModel | VT_LPSTR |
/{ushort=42037} | LensSerialNumber | VT_LPSTR |
/{ushort=33434} | ExposureTime | VT_UI8 |
/{ushort=33437} | FNumber | VT_UI8 |
/{ushort=34850} | ExposureProgram | VT_UI2 |
/{ushort=34852} | SpecspecivitySensitivity | VT_LPSTR |
/{ushort=34855} | PhotographicSensitivity | VT_VECTOR |VT_UI2 |
/{ushort=34856} | OECF | VT_BLOB |
/{ushort=34864} | SensitivityType | VT_UI2 |
/{ushort=34865} | StandardOutputSensitivity | VT_UI4 |
/{ushort=34866} | RecommendedExposureIndex | VT_UI4 |
/{ushort=34867} | ISOSpeed | VT_UI4 |
/{ushort=34868} | ISOSpeedLatitudeyyyy | VT_UI4 |
/{ushort=34869} | ISOSpeedLatitudezzz | VT_UI4 |
/{ushort=37377} | ShutterSpeedValue | VT_I8 |
/{ushort=37378} | ApertureValue | VT_UI8 |
/{ushort=37379} | BrightnessValue | VT_I8 |
/{ushort=37380} | ExposureBiasValue | VT_I8 |
/{ushort=37381} | MaxApertureValue | VT_UI8 |
/{ushort=37382} | SubjectDistance | VT_UI8 |
/{ushort=37383} | MeteringMode | VT_UI2 |
/{ushort=37384} | LightSource | VT_UI2 |
/{ushort=37385} | Flash | VT_UI2 |
/{ushort=37386} | FocalLength | VT_UI8 |
/{ushort=37396} | SubjectArea | VT_VECTOR |VT_UI2 |
/{ushort=41483} | FlashEnergy | VT_UI8 |
/{ushort=41484} | SpatialFrequencyResponse | VT_BLOB |
/{ushort=41486} | FocalPlaneXResolution | VT_UI8 |
/{ushort=41487} | FocalPlaneYResolution | VT_UI8 |
/{ushort=41488} | FocalPlaneResolutionUnit | VT_UI2 |
/{ushort=41492} | SubjectLocation | VT_VECTOR |VT_UI2 |
/{ushort=41493} | ExposureIndex | VT_UI8 |
/{ushort=41495} | SensingMethod | VT_UI2 |
/{ushort=41728} | FileSource | VT_BLOB |
/{ushort=41729} | SceneType | VT_BLOB |
/{ushort=41730} | CFAPattern | VT_BLOB |
/{ushort=41985} | CustomRendered | VT_UI2 |
/{ushort=41986} | ExposureMode | VT_UI2 |
/{ushort=41987} | WhiteBalance | VT_UI2 |
/{ushort=41988} | DigitalZoomRatio | VT_UI8 |
/{ushort=41989} | FocalLengthIn35mmFilm | VT_UI2 |
/{ushort=41990} | SceneCaptureType | VT_UI2 |
/{ushort=41991} | GainControl | VT_UI8 |
/{ushort=41992} | 与此示例 | VT_UI2 |
/{ushort=41993} | 饱和度 | VT_UI2 |
/{ushort=41994} | Sharpness | VT_UI2 |
/{ushort=41995} | DeviceSettingDescription | VT_BLOB |
/{ushort=41996} | SubjectDistanceRange | VT_UI2 |
GPS 元数据
GPS 元数据包含地理位置信息,定义为 EXIF JPEG 规范的一部分。 它使用 ushort 类型的标记标识每个元数据项。 JPEG、TIFF 和 JPEG-XR 支持 GPS 元数据;第三方格式(如某些相机原始格式)可能也支持 GPS 元数据。
下表提供了用于访问某些常用 GPS 元数据项的相对元数据查询路径。 此表并非详尽列表:有关详细信息,请参阅 EXIF 标准。
注意
许多 GPS 元数据项在 EXIF 标准中定义为类型“RATIONAL”。 “RATIONAL”由分子和分母组成,这两者都是 32 位无符号整数。 分子包含在高 32 位中,分母包含在低 32 位中。 在 WIC 中,这些属性返回为 PROPVARIANT,类型为 VT_UI8。 实际值存储为ULARGE_INTEGER。 若要访问分子和分母,请阅读ULARGE_INTEGER值的 HighPart 和 LowPart 成员。
注意
此处表中的某些元数据项需要其他解释或信息才能正确使用。 例如,GPSLatitudeRef 元数据项返回类型为 VT_LPSTR 的 PROPVARIANT。 根据 EXIF 标准,此字符串为“N”或“S”,表示北纬或南纬。 有关详细信息,请参阅 EXIF 标准。
相对路径 | 名称 | 类型 |
---|---|---|
{ushort=0} | GPSVersionID | VT_VECTOR |VT_UI1 |
{ushort=1} | GPSLatitudeRef | VT_LPSTR |
{ushort=2} | GPSLatitude | VT_VECTOR |VT_UI8 |
{ushort=3} | GPSLongitudeRef | VT_LPSTR |
{ushort=4} | GPSLongitude | {ushort=4}GPSLongitude VT_VECTOR |VT_UI8 |
{ushort=5} | GPSAltitudeRef | VT_UI1 |
{ushort=6} | GPSAltitude | VT_UI8 |
{ushort=7} | GPSTimeStamp | VT_VECTOR |VT_UI8 |
{ushort=8} | GPSSatellites | VT_LPSTR |
{ushort=9} | GPSStatus | VT_LPSTR |
{ushort=10} | GPSMeasureMode | VT_LPSTR |
{ushort=11} | GPSDOP | VT_UI8 |
{ushort=12} | GPSSpeedRef | VT_LPSTR |
{ushort=13} | GPSSpeed | VT_UI8 |
{ushort=14} | GPSTrackRef | VT_LPSTR |
{ushort=15} | GPSTrack | VT_UI8 |
XMP 元数据
XMP 是基于 XML 的可扩展元数据标准。 元数据项可以是分层的,并且包含复杂的数据结构。 JPEG、TIFF 和 JPEG-XR 支持 XMP 元数据。 第三方格式(如某些相机原始格式)可能也支持 XMP 元数据。
可以从 获取 XMP 标准: https://www.adobe.com/devnet/xmp.html。
XMP 和 允许第三方实体发布自己的架构或命名空间,从而允许它们定义新的元数据项,而无需修改 XMP 标准。 XMP 架构由 URL 唯一标识,但 WIC 为已知架构提供一组友好标识符。
XMP 元数据项由字符串名称和架构标识符标识。 最佳做法是,每个 XMP 元数据查询都应同时指定架构和名称。 如果缺少架构标识符,JPEG 将尝试在 XMP 元数据数据包中存在的所有命名空间中匹配元数据名称。
例如,若要获取 JPEG 映像中 XMP 架构定义的 Rating 属性,请使用以下查询:
- /xmp/{wstr=https://ns.adobe.com/xap/1.0/}:Rating
第一部分“/xmp”检索图像的 XMP 元数据读取器/编写器。 "https://ns.adobe.com/xap/1.0/"是 XMP 架构的 URL,如 XMP 标准中定义。 URL 括在数据表达式中,以允许使用正斜杠 (/) 等字符。 最后,“Rating”是 XMP 架构定义的实际元数据项名称,它与架构标识符之间用冒号 (:) 分隔。
在此示例中,WIC 为 XMP 架构提供了一个友好标识符,该标识符可用于代替完整 URL。 因此,上一个查询可以重写为:
- /xmp/xmp:Rating
WIC 为以下常用架构提供友好的架构前缀:
如果特定架构没有友好的架构前缀,例如,如果图像包含使用自定义第三方架构的 XMP 元数据,则元数据查询应使用完整的架构 URL。
相关主题