Cómo escribir metadatos de imagen (HTML)
[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows Runtime. Si estás desarrollando para Windows 10, consulta la documentación más reciente ]
Aquí se muestra cómo usar un objeto BitmapEncoder para escribir metadatos de imagen. Puedes escribir metadatos mediante las propiedades de Windows o el lenguaje de consulta de metadatos de Windows Imaging Component (WIC).
Para obtener más información sobre el acceso a metadatos mediante BitmapDecoder y BitmapEncoder, consulta Cómo leer metadatos de imagen.
Nota Puedes usar las API Windows.Storage.FileProperties para obtener y establecer propiedades básicas en un Windows.StorageFile sin abrir una secuencia. Consulta Cómo obtener propiedades de imagen para obtener más información.
Lo que debes saber
Tecnologías
- Crear tu primera aplicación de Windows en tiempo de ejecución con JavaScript
- Windows.Graphics.Imaging
- Lenguaje de consulta de metadatos de WIC
- Lenguaje de consulta de metadatos de WIC
- Consultas de metadatos de formato de imagen nativa WIC
- Propiedades de Windows admitidas
Requisitos previos
- Debes saber crear una aplicación de Windows en tiempo de ejecución básica con JavaScript. Para obtener más información, consulta el tema sobre cómo crear tu primera aplicación de Windows en tiempo de ejecución con JavaScript.
- Deberías saber cómo codificar una imagen con BitmapEncoder. Para obtener más información, consulta Cómo codificar una imagen nueva.
Instrucciones
Paso 1: Obtener un objeto codificador
Escribe el inicio de una función que recibe un objeto BitmapEncoder.
function (encoder) {
El codificador te permite acceder a los metadatos de imagen. Si aún no tienes un objeto codificador, consulta Cómo codificar una imagen nueva.
Paso 2: Crear una colección de metadatos que se van a establecer
Usa BitmapPropertySet para almacenar los elementos de metadatos que quieras establecer en el codificador. Cada elemento de metadatos es un par clave-valor.
La clave es una cadena que identifica el elemento de metadatos que se va a establecer. BitmapEncoder acepta algunas propiedades de Windows, además de consultas creadas con el lenguaje de consulta de metadatos de WIC. Para ver una lista de las propiedades de Windows admitidas, consulta Propiedades de Windows admitidas. Para ver un resumen de las consultas de metadatos de WIC admitidas, consulta Consultas de metadatos de formato de imagen nativa WI.
El valor es un BitmapTypedValue que te permite asociar el valor de metadatos real con un tipo de datos explícito (Windows.Foundation.PropertyType).
Establece los metadatos System.Photo.Orientation, que especifican la orientación de EXIF, en el valor 1, que especifica una orientación "normal", y asígnale el tipo de datos 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);
Paso 3: Establecer los metadatos en el codificador
Cuando hayas creado todos los elementos de metadatos, establécelos en el codificador y continúa con la operación de codificación.
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;
}
});
}
Nota Cada formato de imagen admite un conjunto distinto de elementos de metadatos. Si intentas establecer un elemento de metadatos o de propiedad no compatible con el formato de imagen, obtendrás un error. Por ejemplo, solo los formatos de imagen JPEG, TIFF y JPEG-XR admiten la propiedad System.Photo.Orientation.
Observaciones
Para establecer varias propiedades debes usar el mismo procedimiento que para establecer una sola, pero debes especificar varios pares nombre-valor en una lista. Este código establece Orientation y CameraModel al mismo tiempo.
encoder.savePropertiesAsync(["System.Photo.Orientation": 1],
"System.Photo.CameraModel": "Camera Model 1"]);
Temas relacionados
Lenguaje de consulta de metadatos de WIC