Format Exchangeable Image File (Exif)
Exchangeable image file format (Exif) est un standard qui définit les formats d'image utilisés par certains appareils photos numériques et appareils photos de smartphones. Les balises de métadonnées du standard Exif présentent une large palette d'informations comme par exemple la date et l'heure de la photo ainsi que ses données de géolocalisation, les paramètres de l'appareil photo et des détails de composition de l'image. Lorsqu'une image Exif est convertie en encodage Base64, les métadonnées dans l'image sont également converties en Base64 et sont disponibles à l'extraction.
Note : | Les appareils photos numériques et appareils photos de smartphones ne fournissent pas tous de données Exif. |
Fonctions Exif de MobileTogether Designer
MobileTogether Designer propose les fonctions Exif suivantes :
•L'action Laisser l'utilisateur choisir l'image propose une option qui démarre l'application de l'appareil photo sur l'appareil client de l'utilisateur final. La photo prise est enregistrée dans un nœud XML en tant qu'image encodée en Base64. Si l'application de l'appareil photo utilise le format Exif, les métadonnées Exif sont également enregistrées dans l'image encodée en Base64. Ces données sont disponibles pour une extraction immédiate depuis le nœud XML.
•Une fonction d'extension XPath Altova nommée image-exif-data prend un string Base64 en tant que son argument et retourne toutes les métadonnées Exif contenues dans le string en tant que paires attribut-valeur. (Voir la description de la fonction image-exif-data pour plus de détails.) Pour trouver les bonnes dimensions des images, utiliser la fonction d’extension MobileTogether XPath mt-image-width-and height.)
•Une fonction d'extension XPath Altova nommée suggested-image-file-extension prend un string Base64 en tant que son argument, et retourne une extension de fichier d'image (comme jpg, png, bmp). Cela est utile pour la détection automatique du format d'image correct et pour enregistrer le fichier avec une extension de fichier appropriée.
•L'action Charger/Enregistrer Image sur le fichier permet d'enregistrer une image encodée en Base64 dans un format d'image binaire (comme jpg, png, bmp). Les données Exif sont sauvegardées dans le texte encodé en Base64.
L'exemple ci-dessous explique comment extraire les données Exif depuis une image encodée en Base64 et comment ces données peuvent être utilisées dans une solution.
Note : | Les données Exif seront perdues si l'image est redimensionnée ou tournée. |
Fichier d'exemple : Base64Images.mtd
Le fichier de design Base64Images.mtd est situé dans votre dossier MobileTogether (Mes) Documents : MobileTogetherDesignerExamples\Tutorials\Images. Vous pouvez ouvrir ce fichier dans MobileTogether Designer, l'exécuter dans le simulateur (F5) et consulter les définitions de design. Le fichier par défaut du design contient une image avec des métadonnées Exif.
Le fichier de design utilise des images encodées en Base64 qui sont stockées dans le fichier XML Base64Images.xml (qui se trouve également dans le dossier Tutoriels\Images). La structure du fichier XML est montrée dans la capture d'écran ci-dessous. L'élément images comporte cinq éléments enfants. Chacun d'entre eux comporte une image de format différent stockée en tant que string Base64. Elle contient une image avec des métadonnées Exif (l'élément exif). L'arborescence $PERSISTENT est utilisée pour enregistrer des sélections d'utilisateur temporaires (ComboBoxValue) et des métadonnées Exif (ExifData). La partie supérieure du design (capture d'écran ci-dessous) a un libellé pour le titre de page et deux tables. Le design de cette partie de la page est décrit dans la section précédente, les Images encodées en Base64. Le but est de permettre à l'utilisateur final de choisir un type d'image dans la liste de choix. Cette sélection détermine quelle image encodée en Base64 est sélectionnée dans le fichier XML pour un affichage dans la cellule à la droite de la liste de choix. Si l'utilisateur choisit l'élément exif dans la liste de choix, l'image encodée en Base64 dans l'élément exif du fichier XML s'affichera. Les métadonnées Exif sont affichées dans deux tables ("Selected Exif data of image" et "Exif metadata of the selected image"; voir simulateur dans la capture d'écran ci-dessous). Dans le simulateur, si vous élargissez l'arborescence $PERSISTENT dans le panneau de Données XML (voir capture d'écran ci-dessous), vous verrez les données Exif qui ont été extraites des strings Base64. Le design des deux tableaux d'affichage des données Exif est décrit ci-dessous. Voir la section précédente, Images encodées en Base64 pour une description détaillée des autres parties du design.
|
•Les données Exif sélectionnées sont présentées dans un tableau statique consistant en deux colonnes et plusieurs lignes (capture d'écran ci-dessous). •La première colonne contient des libellés ; la deuxième colonne contient des champs d'éditions. Chaque colonne a une expression XPath qui retourne une métadonnée Exif. •L'information Type d'image est obtenue depuis le string de texte encodé en Base64 en utilisant la fonction d'extensions XPath Altova suggested-image-file-extension. Cette fonction prend un string (l'image Base64) en tant que son argument et extrait l'information d'extension de fichier depuis le string. Si aucune information d'extension de fichier n'est disponible dans le string Base64, la fonction retourne le string vide. L'expression XPath utilisée est: •Toutes les autres expressions XPath dans la table (sauf la première ligne) utilisent la fonction d'extension XPath Altova image-exif-data pour obtenir une métadonnée Exif. Cette fonction prend un string (l'image Base64) en tant que son argument et retourne un nœud d'élément (nommé Exif) avec des attributs conservant les métadonnées Exif. Chaque paire de valeur d'attribut correspond à une balise de métadonnées Exif. Dans l'expression ci-dessous, la fonction image-exif-data retourne l'élément Exif avec plusieurs attributs. L'information de métadonnées que nous souhaitons obtenir avec cette expression est la largeur de l'image. Cette information est stockée dans le nœud d'attribut @PixelXDimension de l'élément Exif. •Pour plus d'informations concernant la fonction image-exif-data, voir sa description dans la section des fonctions d'extension Altova. •Veuillez noter la dernière valeur de Géolocalisation dans la table. Elle est obtenue via un attribut Exif/@Geolocation créé par Altova. •Le nœud $PERSISTENT/Root/ExifData est rempli avec les données Exif en y ajoutant un nœud enfant qui contient le résultat de la fonction image-exif-data. Pour ce faire, spécifier une action Ajouter nœud dans la liste de choix qui sélectionne quelle image afficher (voir capture d'écran ci-dessous). L'action est déclenchée par l'événement ÉditionÀLaFin de la liste de choix.
|
•Une table avec une ligne répétitive (capture d'écran du design en bas à gauche ; affichage du simulateur en bas à droite) est utilisée pour afficher toutes les paires de valeurs d'attribut retournées par la fonction image-exif-data. •La ligne répétitive est spécifiée avec une expression XPath qui choisit tous les attributs du nœud d'élément Exif retourné par la fonction image-exif-data :
•La première colonne de la table contient la position d'index de l'attribut actuel : index-of(../@*/name(), ./name() ) •La deuxième colonne contient le nom de l'attribut actuel : name(.) •La troisième colonne contient la valeur de l'attribut actuel : current() •Toutes les images ne contiennent pas les mêmes métadonnées Exif. Dans certains cas, certaines métadonnées peuvent être absentes ; dans d'autres cas, des métadonnées supplémentaires peuvent être présentes ; ou bien, des métadonnées peuvent être balisées avec des balises non standardisées et spécifiques au vendeur. Par conséquent, il est important de savoir quelles métadonnées sont disponibles et sous quels noms d'attribut. Ce n'est qu'avec ces informations que des valeurs d'attribut spécifiques pourront être extraites. •Si nous connaissons les noms des attributs qui sont retournés, nous pouvons accéder à sa valeur en utilisant la fonction image-exif-data de la sorte : image-exif-data(Base64String)/@WantedAttribute. Veuillez noter que la fonction retourne l'élément Exif.
|
•Il peut s'avérer utile de voir toutes les paires de valeur d'attribut retournées par la fonction image-exif-data. Pour afficher les paires de valeur d'attribut, nous pouvons simplement stocker cette sortie de manière dans l'arborescence temporaire $PERSISTENT. •Dans notre design d'exemple, le nœud $PERSISTENT/Root/ExifData est rempli avec les données Exif en ajoutant un nœud enfant au nœud ExifData qui contient le résultat de la fonction image-exif-data. •Pour ce faire, spécifier une action Ajouter nœud sur la liste de choix qui sélectionne quelle image afficher (voir capture d'écran ci-dessous). L'action Ajouter nœud est déclenchée par l'événement ÉditionÀLaFin de la liste de choix. •L'expression de localisation XPath dans l'action Ajouter nœud localise le nœud dans le fichier XML qui porte le même nom que le string dans $PERSISTENT/Root/ComboBoxValue. •Le nœud $PERSISTENT/Root/ExifData est supprimé avant que les données Exif retournées par la image-exif-data fonction soient ajoutées au nœud ExifData. •Si nous connaissons les noms des attributs qui sont retournés, nous pouvons accéder à la valeur de tout attribut en utilisant la fonction image-exif-data de la sorte : image-exif-data(Base64String)/@WantedAttribute. Veuillez noter que la fonction retourne l'élément Exif.
|