TiPhotoLocator 1.4
A tiny application to easily geotag your photos
Chargement...
Recherche...
Aucune correspondance
Référence de la classe ExifWriteTask

La classe ExifWriteTask permet d'écrire des metadata dans une photo JPEG de façon asynchrone. Plus de détails...

#include <ExifWriteTask.h>

Graphe d'héritage de ExifWriteTask:

Fonctions membres publiques

 ExifWriteTask (const QVariantMap exifData, PhotoModel *photoModel, bool generateBackup=false)
 Constructeur. On enregistre les paramètres.
virtual void run ()
 Lancement de la tache. On lance exifTool dans un QProcess, et on écrit les metadata dans l'image JPG. Cette tache est exécutée dans un thread QRunnable.

Attributs privés

QVariantMap m_exifData
 Liste des metadata à écrire.
bool m_generateBackup
 True si un backup de l'image doit être généré.
PhotoModelm_photoModel
 Modèle des photos.

Description détaillée

La classe ExifWriteTask permet d'écrire des metadata dans une photo JPEG de façon asynchrone.


Tache asynchrone par utilisation de QThreadPool.

Note
: les QRunnable n'héritent pas de QObject et ne peuvent donc pas communiquer avec les autres objets à l'aide de signaux. Cependant, on peut faire un appel direct à la fin du traitement, pour informer le PhotoModel. Cela n'est pas contraire aux recommandations: modifier des données peut se faire par appel synchrone.

Documentation des constructeurs et destructeur

◆ ExifWriteTask()

ExifWriteTask::ExifWriteTask ( const QVariantMap exifData,
PhotoModel * photoModel,
bool generateBackup = false )
explicit

Constructeur. On enregistre les paramètres.


Paramètres
exifDatala liste des metadata à écrire dans le fichier JPG.
generateBackuptrue si un backup de l'image doit être généré avant sa modification. Code de remplissage de la QMap:
QVariantMap exifData;
exifData.insert("index", idx; // Index de la photo
exifData.insert("imageUrl", idx.data(ImageUrlRole)); // Ce champ sert de clef
exifData.insert("GPSLatitude", idx.data(LatitudeRole));
exifData.insert("GPSLongitude", idx.data(LongitudeRole));
exifData.insert("GPSLatitudeRef", idx.data(LatitudeRole).toInt()>0 ? "N" : "S" );
exifData.insert("GPSLongitudeRef", idx.data(LongitudeRole).toInt()>0 ? "E" : "W" );
exifData.insert("DateTimeOriginal", idx.data(DateTimeOriginalRole));
exifData.insert("MetadataEditingSoftware", software);
exifData.insert("Creator", idx.data(CreatorRole)); // MWG écrit aussi dans Artist
exifData.insert("City", idx.data(CityRole)); // MWG écrit dans EXIF et dans IptcExt
exifData.insert("Country", idx.data(CountryRole)); // MWG écrit dans EXIF et dans IptcExt
exifData.insert("Location", idx.data(LocationRole)); // MWG écrit dans EXIF et dans IptcExt
exifData.insert("Description", idx.data(DescriptionRole)); // MWG écrit aussi dans ImageDescription
exifData.insert("CaptionWriter", idx.data(CaptionWriterRole));
exifData.insert("Keywords", idx.data(KeywordsRole)); // Liste des keywords

Documentation des fonctions membres

◆ run()

void ExifWriteTask::run ( )
virtual

Lancement de la tache. On lance exifTool dans un QProcess, et on écrit les metadata dans l'image JPG. Cette tache est exécutée dans un thread QRunnable.


Note
Le mode MWG de ExifTool permet d'ecrire en une fois dans les différents tags équivalents (ex: Artist et Creator, ou bien EXIF:City et IptcExt:City, etc). Le Metadata Working Group recommande de garder ces tags EXIF et IPTC synchronisés.
Pour vérifier les tags écrits: exiftool -G1 -a -s -XMP-iptcCore:All -XMP-iptcExt:All mypicture.jpg (-G1 = Group 1 = "Location") (-s = shows tag names instead of description)
Voir également
https://exiftool.org/TagNames/MWG.html

La documentation de cette classe a été générée à partir des fichiers suivants :