Vous pouvez enregistrer la date, l'heure et l'emplacement de la prise de vue dans le fichier JPG de la photo. Les informations d'étiquette peuvent être écrites sur des photos prises avec un drone, etc. Ils semblent être enregistrés selon un format commun. Le but est de les lire et de les écrire.
Il existe de nombreuses descriptions sur GPS Exif. Alors, voici une note sur xmp, qui semble être moins informative. Je peux le lire, mais je ne suis pas doué pour l'écrire. (Larmes)
Apparemment, il a été défini par Adobe et utilisé pour ajouter des informations à chaque fichier au format XML dans l'en-tête du fichier. Je ne connais pas les détails. ^^;)
Ainsi, par exemple, si vous le regardez avec la commande less, vous pouvez lire la partie XML du texte telle quelle. Mon oncle est dans un environnement Linux (WSL), --Ouvrez le fichier avec moins ―― On vous demandera "C'est binaire, mais allez-vous l'ouvrir?", Alors répondez Oui.
<x:xmpmeta xmlns:x="adobe:ns:meta/">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about="DJI Meta Data"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:crs="http://ns.adobe.com/camera-raw-settings/1.0/"
xmlns:drone-dji="http://www.dji.com/drone-dji/1.0/"
xmp:ModifyDate="2018-12-14"
xmp:CreateDate="2018-12-14"
tiff:Make="DJI"
tiff:Model="FC6310R"
dc:format="image/jpg"
drone-dji:AbsoluteAltitude="+255.92"
...
Ressemble à. Le but est de lire et d'écrire ces informations.
Bien sûr, il existe des outils utiles.
python3 -m pip install python-xmp-toolkit
Le XMP-Toolkit-SDK est également disponible auprès d'Adobe pour chaque source. Je me demande s'il peut être utilisé avec des applications intégrées ou pour smartphone. https://github.com/adobe/XMP-Toolkit-SDK
L'utilisation est écrite dans Doc of python-xmp-toolkit, et je l'ai juste suivie et il n'y a pas eu de problème. .. Fait une note.
read_xmp01.py
from libxmp import XMPFiles
xmpfile = XMPFiles( file_path="./100_0020_0001.JPG", open_forupdate=True )
xmp = xmpfile.get_xmp()
S'il n'y a pas d'erreur, vous pouvez le lire. ^^;) Vous pouvez vérifier le contenu de xmp de différentes manières.
Dans l'exemple précédent
tiff:Make="DJI"
Il y avait une ligne appelée. Je veux obtenir la valeur "DJI" directement pour la clé "tiff: Make". Deux étapes sont nécessaires pour cela.
Tout d'abord, récupérez l'espace de noms (URI) du tiff.
In[]: xmp.get_namespace_for_prefix("tiff")
Out[]: 'http://ns.adobe.com/tiff/1.0/'
Il existe également un espace de noms dans lequel Adobe est défini à l'avance, qui peut également être référencé à partir de la bibliothèque.
In []: libxmp.consts.XMP_NS_EXIF
Out[]: 'http://ns.adobe.com/exif/1.0/'
Vous pouvez également trouver le nom de la variable directement en regardant "Espaces de noms communs" dans Source. ..
Pour lire la valeur de la balise tiff: Make, spécifiez l'espace de noms correspondant au tiff.
In []: xmp.get_property(xmp.get_namespace_for_prefix('tiff'),'Make')
Out[]: 'DJI'
En vérifiant à l'avance si le mot-clé se trouve dans l'espace de noms, vous pouvez éviter les erreurs.
In []: xmp.does_property_exist(xmp.get_namespace_for_prefix('tiff'),'TEST')
Out[]: False
Pour être précis, il devrait être possible de "réécrire", mais en réalité. .. ..
Tout d'abord, définissez la valeur de xmp.
In []: xmp.set_property(xmp.get_namespace_for_prefix('tiff'),'Make', 'some/makers')
In []: xmp.get_property(xmp.get_namespace_for_prefix('tiff'),'Make')
Out[]: 'some/makers'
Pour écrire dans un fichier, il semble que vous deviez mettre xmpfile et fermer le fichier.
In []: if xmpfile.can_put_xmp(xmp):
...: xmpfile.put_xmp(xmp)
...: xmpfile.close_file()
Ça devrait être bon. .. .. Le résultat n'a pas été réécrit correctement. Je ne sais pas si la procédure est différente ou si c'est un bug, mais je vais en prendre note pour l'instant. Aucune erreur ne se produit au moment de l'exécution.
J'étais dans un état où je ne pouvais le lire que pour le moment. Voici ma tâche:
--Pouvez-vous obtenir toutes les balises de chaque espace de noms à l'avance? --Vérifier l'opération d'écriture
c'est tout. (08/08/2020)
Recommended Posts