Aplicaciones de Windows
Contraer la tabla de contenido
Expandir la tabla de contenido

Cómo leer metadatos de imagen (aplicaciones de la Tienda Windows con JavaScript y HTML)

Te mostramos cómo recuperar metadatos de un archivo de imagen. Los formatos de imagen como JPEG, TIFF y PNG admiten una variedad de metadatos que describen elementos como palabras clave, ubicación GPS e información de la cámara. Puedes obtener acceso a las propiedades de imagen usadas frecuentemente y acceso más avanzado a los metadatos sin procesar almacenados en formatos como EXIF y XMP.

Existen dos clases para acceder a los metadatos de imagen, en función de tu escenario: Windows.Storage.FileProperties.ImageProperties y Windows.Graphics.Imaging.BitmapPropertiesView.

Puedes usar BitmapPropertiesView para obtener propiedades de Windows, como ImageProperties. Pero proporciona un acceso de nivel inferior a las estructuras de metadatos nativos en el archivo que utiliza el lenguaje de consulta de metadatos WIC. Acceder a metadatos nativos es un escenario más avanzado, pero te proporciona acceso a más metadatos que los que proporciona el sistema de propiedades de Windows.

Lo que debes saber

Tecnologías

Requisitos previos

Instrucciones

Paso 1: Obtener un objeto descodificador

Escribe el inicio de una función que recibe un objeto BitmapDecoder y declara las variables en las que deseas almacenar las propiedades devueltas.


(function (decoder) {
      var orientation;
      var xmpCreator;


Usa el descodificador para acceder a los metadatos de imagen. Si aún no tienes un objeto descodificador, consulta el tema sobre cómo descodificar una imagen. Declara las variables aquí para mantenerlas dentro del ámbito.

Paso 2: Recuperar una propiedad de Windows

La clase BitmapDecoder cuenta con un miembro BitmapProperties que corresponde al tipo BitmapPropertiesView. Al igual que ImageProperties, puedes solicitar de manera asincrónica una propiedad de Windows compatible al pasar una lista de nombres clave de propiedades a bitmapProperties.getPropertiesAsync.

Nota  No todas las propiedades son compatibles con todos los formatos. Directivas de metadatos de fotos muestra qué formatos de imagen admiten cada propiedad.


     return 
decoder.bitmapProperties.getPropertiesAsync(["System.Photo.Orientation"])
     .then(function(retrievedProps) {


BitmapPropertiesView se comporta de manera diferente de ImageProperties de ciertas formas importantes:

  • Debes comprobar que la propiedad exista antes de recuperarla de la colección. El método devuelve un error si la propiedad no existe.
  • Cada valor de propiedad corresponde al tipo BitmapTypedValue. Este objeto tiene un miembro Valor que contiene los datos reales y un miembro Tipo, que indica los datos.
  • BitmapPropertiesView devuelve un error si el formato de la imagen no admite la propiedad que solicitaste. Necesitas controlar estos errores o asegurarte de que tu código sólo solicite propiedades compatibles con el formato de imagen. Por ejemplo, los archivos BMP no contienen ningún metadato.

Así se busca una propiedad:


if (retrievedProperties.hasKey("System.Photo.Orientation") {
        orientation = retrievedProperties.lookup("System.Photo.Orientation").value;
    }     
}, function (error) {
    switch (error.number) {
        case -2003292287:
            // The image format does not support this property.
            break;
        case -2003292287:
            // The image format does not support metadata.
            break;
        default:
            // Catch any other errors.
            break;
    }
});


Paso 3: Recuperar metadatos de imagen nativa

Si bien ImageProperties está limitado a las propiedades de Windows, BitmapPropertiesView te proporciona acceso a la mayoría de los metadatos almacenados dentro de una imagen. Para obtener una lista de formatos de metadatos que admite cada códec de mapa de bits, consulta Consultas de metadatos de formato de imagen nativa.

Usa el lenguaje de consulta de metadatos WIC para buscar propiedades de forma similar a la que usas las propiedades System.Photo. Reemplaza el nombre de la propiedad con la cadena de la consulta de metadatos.

Reemplaza el código que escribió en el Paso 2 con este código:


return decoder.bitmapProperties.getPropertiesAsync(["/xmp/dc:creator"])
.then(function(retrievedProps) {
    if (retrievedProperties.hasKey("/xmp/dc:creator") {
        xmpCreator = retrievedProperties.lookup("/xmp/dc:creator").value;
    }     
}, function (error) {
    switch (error.number) {
        case -2003292287:
            // The image format does not support this property.
            break;
        case -2003292287:
            // The image format does not support metadata.
            break;
        default:
            // Catch any other errors.
            break;
    }
});


Este fragmento de código en particular solicita los metadatos del creador como se define en el esquema Dublin Core XMP. La consulta "/xmp/dc:creator" solo es válida para imágenes JPEG. Por ejemplo, las imágenes TIFF también admiten metadatos XMP, pero la consulta TIFF equivalente es "/ifd/xmp/dc:creator".

Temas relacionados

Cómo descodificar una imagen
Introducción al lenguaje de consulta de metadatos
Propiedades System.Photo
Cómo escribir metadatos de imagen
Directivas de metadatos de fotos

 

 

Mostrar:
© 2018 Microsoft