如何写入图像元数据 (HTML)

[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]

这为你显示如何使用 BitmapEncoder 对象读取图像元数据。 你可以使用 Windows 属性或 Windows 图像处理组件 (WIC) 元数据查询语言写入元数据。

有关使用 BitmapDecoderBitmapEncoder 进行元数据访问的详细信息,请参阅如何读取图像元数据

注意  你可以使用 Windows.Storage.FileProperties API 来获取和设置 Windows.StorageFile 上的基本属性而无需打开数据流。有关详细信息,请参阅如何获取图像属性

 

你需要了解的内容

技术

先决条件

说明

步骤 1: 获取编码器对象

编写用来接收 BitmapEncoder 对象的函数的开头。

function (encoder) {
    

使用编码器,可以访问图像元数据。 如果你尚未拥有编码器对象,请参阅如何对新图像进行编码

步骤 2: 创建要设置的元数据集

使用 BitmapPropertySet 存储要在编码器上设置的元数据项。每个元数据项都是一个键值对。

键就是标识要设置的元数据项的字符串。BitmapEncoder 接受某些 Windows 属性,以及使用 WIC 元数据查询语言构建的查询。有关支持的 Windows 属性的列表,请参阅支持的 Windows 属性。有关支持 WIC 元数据查询的摘要,请参阅 WIC 本机图像格式元数据查询

该值为 BitmapTypedValue,它允许你将实际元数据值与显式数据类型 (Windows.Foundation.PropertyType) 相关联。

System.Photo.Orientation 元数据(指定 EXIF 方向)设置为值 1,这将指定“常规”方向,并为其分配数据类型 uint16。

    var propertySet = new Windows.Graphics.Imaging.BitmapPropertySet();
    var orientationValue = new Windows.Graphics.Imaging.BitmapTypedValue(
        1, // Defined as EXIF orientation = "normal"
        Windows.Foundation.PropertyType.uint16
        );

    propertySet.insert("System.Photo.Orientation", orientationValue);     

步骤 3: 设置编码器上的元数据

在构建完成所有元数据项后,将在编码器上设置这些项并继续编码操作。

    encoder.bitmapProperties.setPropertiesAsync(propertySet).done(function () {
        // Continue the encoding operation.
    }, function (error) {
        switch (error.number) {
            case -2003292351: // WINCODEC_ERR_PROPERTYNOTSUPPORTED
                // The file format does not support this property.
                break;
            default:
                throw error;
        }
    });
}    

注意  每种图像格式支持不同的元数据项集。如果尝试设置图像格式不支持的元数据或属性项,则将发生错误。例如,只有 JPEG、TIFF 和 JPEG-XR 图像支持 System.Photo.Orientation 属性。

 

备注

设置多个属性与设置单个属性的作用相同,但是你可在列表中指定多个名称-值对。 此处代码同时设置 OrientationCameraModel

encoder.savePropertiesAsync(["System.Photo.Orientation": 1],
                                                         "System.Photo.CameraModel": "Camera Model 1"]);

相关主题

如何编码图像

System.Photo 属性

如何读取图像元数据

WIC 元数据查询语言

WIC 本机图像格式元数据查询

支持的 Windows 属性