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

La tache asynchrone ExifReadTask permet de lire les metadonnées d'une photo JPG sur le disque dur. Plus de détails...

#include <ExifReadTask.h>

Graphe d'héritage de ExifReadTask:

Fonctions membres publiques

 ExifReadTask (int pos, QString filePath)
 Constructeur. On enregistre le chemin et le nom du fichier JPG à lire.
virtual void run ()
 Lancement de la tache. On lance exifTool dans un process, et on analyse la réponse. Cette tache est exécutée dans un thread QRunnable. A la fin de la tache, processLine écrit les résultats dans PhotoModel.

Fonctions membres publiques statiques

static void init (PhotoModel *photoModel)
 Méthode à appeler lors de la première utilisation. Mémorise quelques infos statiques.

Fonctions membres privées

void processLine (QByteArray line)
 Analyse une partie du flux texte reçu de exifTool. Cette méthode est appelée répétitivement.

Fonctions membres privées statiques

static bool writeArgsFile ()
 List the tags to be read in the JPG files, and put them in the Arguments file for ExifTool.

Attributs privés

QString m_filePath
 Nom du fichier contenant les arguments de ExifTool.
int m_filePos =0
 Numéro du fichier dans la listView.
QByteArray m_rxLine
 Données ExifTool en cours de réception.

Attributs privés statiques

static QString m_argFile
 A renseigner lors du premier appel.
static PhotoModelm_photoModel
 Modèle contenant les photos et leurs tags.

Description détaillée

La tache asynchrone ExifReadTask permet de lire les metadonnées d'une photo JPG sur le disque dur.


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. Donc, à la fin du traitement, pour actualiser les données du PhotoModel, il faut faire un appel direct à une méthode du modèle. Cependant, cela n'est pas contraire aux recommandations: mettre à jour des données peut se faire par appel synchrone.

Description of JSON options for ExifTool.

-j[[+]=*JSONFILE*] (-json)
Use JSON (JavaScript Object Notation) formatting for console output (or import a JSON file if *JSONFILE* is specified).
This option may be combined with:
-g to organize the output into objects by group, or
-G to add group names to each tag.
-a option is implied when -json is used, but entries with identical JSON names are suppressed in the output.
-G4 may be used to ensure that all tags have unique JSON names.
-D or -H option changes tag values to JSON objects with "val" and "id" fields
-l adds a "desc" field, and a "num" field if the numerical value is different from the converted "val".
-b option may be added to output binary data, encoded in base64 if necessary (indicated by ASCII "base64:" as the first 7 bytes of the value)
-t may be added to include tag table information (see -t for details).
List-type tags with multiple items are output as JSON arrays unless -sep is used.
The JSON output is UTF-8 regardless of any -L or -charset option setting, but the UTF-8 validation is disabled if a character set other than UTF-8 is specified.
By default XMP structures are flattened into individual tags in the JSON output, but the original structure may be preserved with the -struct option (this also causes all list-type XMP tags to be output as JSON arrays, otherwise single-item lists would be output as simple strings).
Note that ExifTool quotes JSON values only if they don't look like numbers (regardless of the original storage format or the relevant metadata specification).

Documentation des constructeurs et destructeur

◆ ExifReadTask()

ExifReadTask::ExifReadTask ( int pos,
QString filePath )
explicit

Constructeur. On enregistre le chemin et le nom du fichier JPG à lire.


Paramètres
posle numero du fichier dans la liste.
filePathle chemin + nom du fichier JPG à lire.

Documentation des fonctions membres

◆ init()

void ExifReadTask::init ( PhotoModel * photoModel)
static

Méthode à appeler lors de la première utilisation. Mémorise quelques infos statiques.


Paramètres
photoModel: la classe appelante, à qui il faudra renvoyer les metadata lues.

◆ processLine()

void ExifReadTask::processLine ( QByteArray line)
private

Analyse une partie du flux texte reçu de exifTool. Cette méthode est appelée répétitivement.


Paramètres
line: the received text Flux reçu pour une image:
"[{
" "SourceFile": "E:/TiPhotos/P8160449.JPG", "
" "FileName": "P8160449.JPG", "
" "DateTimeOriginal": "2023:08:16 13:30:20", "
" "Model": "E-M10MarkII", "
" "Make": "OLYMPUS CORPORATION", "
" "ImageWidth": 4608, "
" "ImageHeight": 3072, "
" "Artist": "Blemia Borowicz", "
" "Creator": ["Yves","Simone"], "
" "Description": "A busy street.", "
" "Keywords": ["XIXs","crowd"], "
" "GPSLatitude": 48.7664165199528, "
" "GPSLongitude": 14.0194248700017, "
\" \"City\": \"Paris\"\r\n\"
"}]"
(en fait toutes les lignes sont escapées sur le modèle de la ligne City.)

◆ run()

void ExifReadTask::run ( )
virtual

Lancement de la tache. On lance exifTool dans un process, et on analyse la réponse. Cette tache est exécutée dans un thread QRunnable. A la fin de la tache, processLine écrit les résultats dans PhotoModel.


◆ writeArgsFile()

bool ExifReadTask::writeArgsFile ( )
staticprivate

List the tags to be read in the JPG files, and put them in the Arguments file for ExifTool.


Renvoie
true if the file was successfully created.

To learn about the usage of IPTC tags:


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