Share via


Comment lire les métadonnées d’image (HTML)

[ Cet article est destiné aux développeurs Windows 8.x et Windows Phone 8.x qui créent des applications Windows Runtime. Si vous développez une application pour Windows 10, voir la Documentation ]

Cette rubrique explique comment extraire des métadonnées d’un fichier image. Les formats d’image (par exemple, les formats JPEG, TIFF et PNG) prennent en charge un éventail de métadonnées incorporées qui décrivent divers éléments comme des mots clés, un emplacement GPS et des informations de caméra. Vous pouvez accéder à des propriétés d’image fréquemment employées et bénéficier d’un accès accru aux métadonnées brutes stockées dans divers formats, notamment les formats EXIF et XMP.

Selon le scénario que vous choisissez, il existe deux classes permettant d’accéder à des métadonnées d’image : Windows.Storage.FileProperties.ImageProperties et Windows.Graphics.Imaging.BitmapPropertiesView.

Vous pouvez utiliser la classe BitmapPropertiesView pour collecter des propriétés Windows, telles que ImageProperties. Cependant, cette classe offre un accès de niveau inférieur aux structures de métadonnées natives dans le fichier qui utilise le langage de requête de métadonnées WIC (Windows Imaging Component). L’accès aux métadonnées natives est un scénario plus abouti mais vous donne accès à un plus grand nombre de métadonnées que celui fourni par le système de propriétés Windows.

Ce que vous devez savoir

Technologies

Prérequis

Instructions

Étape 1: Obtenir un objet de décodeur

Écrivez le début d’une fonction qui reçoit un objet BitmapDecoder et déclarez des variables dans lesquelles stocker les propriétés récupérées.

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

Servez-vous du décodeur pour accéder aux métadonnées d’image. Si vous ne disposez pas encore d’un objet décodeur, reportez-vous à la rubrique Comment décoder une image. Déclarez les variables à cette étape pour les conserver dans l’étendue.

Étape 2: Récupérer une propriété Windows

La classe BitmapDecoder dispose d’un membre BitmapProperties qui est de type BitmapPropertiesView. Comme pour la propriété ImageProperties, vous pouvez demander une propriété Windows prise en charge, de manière asynchrone, en transmettant une liste des noms des clés de propriété à bitmapProperties.getPropertiesAsync.

Remarque  Toutes les propriétés ne sont pas prises en charge dans chaque format. La rubrique Stratégies de métadonnées de photos fournit une liste qui précise quels formats d’image prennent en charge chaque propriété.

 

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

BitmapPropertiesView présente des différences de comportement importantes par rapport à ImageProperties :

  • Vous devez vérifier qu’une propriété existe avant de l’extraire de la collection. La méthode renvoie une erreur si la propriété n’existe pas.
  • Chaque valeur de propriété est de type BitmapTypedValue. Cet objet possède un membre Value qui renferme les données réelles et un membre Type qui signalent les données.
  • BitmapPropertiesView renvoie une erreur si le format d’image ne prend pas en charge une propriété que vous avez demandée. Vous devez soit traiter ces erreurs, soit vous assurer que votre code demande uniquement les propriétés prises en charge par le format d’image. Par exemple, les fichiers BMP ne contiennent pas de métadonnées.

Voici comment rechercher une propriété :

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;
    }
});

Étape 3: Récupérer des métadonnées d’image natives

Si la propriété ImageProperties se limite aux propriétés Windows, avec BitmapPropertiesView, vous avez accès à la majorité des métadonnées stockées dans une image. Pour obtenir une liste des formats de métadonnées pris en charge par chaque codec de bitmap, voir Requêtes de métadonnées de format d’image natives.

Vous devez utiliser le langage de requête de métadonnées WIC (Windows Imaging Component) pour rechercher des propriétés semblables à la manière dont vous utilisez les propriétés System.Photo. Vous remplacez le nom de la propriété par une chaîne de requêtes de métadonnées.

Remplacez le code rédigé à l’étape 2 par le code suivant :

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;
    }
});

Cet extrait de code précis demande les métadonnées Creator telles qu’elles sont définies par le schéma XMP Dublin Core. La requête"/xmp/dc:creator" est valide uniquement pour les images JPEG. Par exemple, les images TIFF prennent également en charge les métadonnées XMP mais la requête TIFF équivalente est "/ifd/xmp/dc:creator".

Rubriques associées

Comment décoder une image

Vue d’ensemble du langage de requête de métadonnées

Propriétés System.Photo

Comment écrire des métadonnées d’image

Stratégies de métadonnées de photos