Запись метаданных изображения (HTML)
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. В случае разработки приложений для Windows 10 см. раздел последняя документация]
Здесь показано, как использовать объект BitmapEncoder для записи метаданных изображения. Метаданные можно записывать с помощью свойств Windows или языка запросов метаданных компонента обработки изображений Windows (WIC).
Подробнее о доступе к метаданным с помощью BitmapDecoder и BitmapEncoder см. в разделе Чтение метаданных изображения.
Примечание API Windows.Storage.FileProperties можно использовать для получения и установки основных свойств Windows.StorageFile без открытия потока. Подробнее см. в разделе Получение свойств изображения.
Что необходимо знать
Технологии
- Создание первого приложения среды выполнения Windows на JavaScript
- Windows.Graphics.Imaging
- Язык запросов метаданных WIC
- Язык запросов метаданных WIC
- Запросы метаданных собственного формата изображений WIC
- Поддерживаемые свойства Windows
Необходимые условия
- Вы должны уметь создавать простое приложение среды выполнения Windows на JavaScript. Дополнительные сведения см. в разделе о создании первого приложения среды выполнения Windows на JavaScript.
- Вы уже должны знать, как закодировать изображение с помощью BitmapEncoder. Подробнее см. в разделе Кодирование нового изображения.
Инструкции
Этап 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.
Примечания
Задание нескольких свойств выполняется так же, как задание одного свойства, но в списке необходимо указать несколько пар "имя-значение". Приведенный здесь код одновременно задает свойства Orientation и CameraModel.
encoder.savePropertiesAsync(["System.Photo.Orientation": 1],
"System.Photo.CameraModel": "Camera Model 1"]);