Comment écrire des 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 utiliser un objet BitmapEncoder pour écrire des métadonnées d’image. Vous pouvez écrire des métadonnées d’image à l’aide de propriétés Windows ou du langage de requête de métadonnées WIC (Windows Imaging Component).
Pour plus d’informations sur l’accès aux métadonnées à l’aide de BitmapDecoder et BitmapEncoder, voir Comment lire des métadonnées d’image.
Remarque Vous pouvez vous servir des API Windows.Storage.FileProperties pour collecter et définir des propriétés de base dans un Windows.StorageFile sans ouvrir un flux. Pour plus d’informations, voir Comment obtenir des propriétés d’image.
Ce que vous devez savoir
Technologies
- Création de votre première application Windows Runtime en JavaScript
- Windows.Graphics.Imaging
- Langage de requête de métadonnées WIC
- Langage de requête de métadonnées WIC
- Requêtes de métadonnées au format d’image natif WIC
- Propriétés Windows prises en charge
Prérequis
- Vous devez être en mesure de créer une application Windows Runtime de base en JavaScript. Pour plus d’informations, voir Création de votre première application Windows Runtime en JavaScript.
- Vous devez savoir comment encoder une image à l’aide de BitmapEncoder. Pour plus d’informations, voir Comment coder une nouvelle image.
Instructions
Étape 1: Obtenir un objet d’encodeur
Écrivez le début d’une fonction qui reçoit un objet BitmapEncoder.
function (encoder) {
L’encodeur vous permet d’accéder aux métadonnées d’image. Si vous ne disposez pas encore d’un objet d’encodeur, voir Comment coder une nouvelle image.
Étape 2: Créer une collection de métadonnées à définir
Utilisez un BitmapPropertySet pour stocker des éléments de métadonnées que vous souhaitez définir sur l’encodeur. Chaque élément de métadonnées est une paire clé-valeur.
La clé est une chaîne qui identifie l’élément de métadonnées à définir. BitmapEncoder accepte certaines propriétés Windows, ainsi que des requêtes créées à l’aide du langage de requête de métadonnées WIC. Pour obtenir une liste des propriétés Windows prises en charge, voir Propriétés Windows prises en charge. Pour obtenir un récapitulatif des requêtes de métadonnées WIC prises en charge, voir Requêtes de métadonnées au format d’image natif WIC.
La valeur est un BitmapTypedValue qui vous permet d’associer la valeur de métadonnées réelle avec un type de données explicite (Windows.Foundation.PropertyType).
Définissez les métadonnées System.Photo.Orientation qui spécifient l’orientation EXIF sur une valeur de 1 qui précise l’orientation « normale » et y attribue un type de données 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);
Étape 3: Définir les métadonnées sur l’encodeur
Une fois tous les éléments de métadonnées créés, définissez-les sur l’encodeur et poursuivez l’opération de codage.
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;
}
});
}
Remarque Chaque format d’image prend en charge un ensemble distinct d’éléments de métadonnées. Si vous tentez de définir un élément de métadonnées ou de propriété qui n’est pas pris en charge par le format d’image, vous obtiendrez une erreur. Par exemple, seules les images JPEG, TIFF et JPEG-XR prennent en charge la propriété System.Photo.Orientation.
Remarques
La définition de plusieurs propriétés obéit aux mêmes principes que la définition d’une seule propriété, sauf que vous spécifiez plusieurs paires nom-valeur dans une liste. Le code présenté ici définit simultanément les valeurs Orientation et CameraModel.
encoder.savePropertiesAsync(["System.Photo.Orientation": 1],
"System.Photo.CameraModel": "Camera Model 1"]);
Rubriques associées
Comment lire les métadonnées d’image
Langage de requête de métadonnées WIC