cClaude.rocks ☕ Le blog

[Nouvelles technologies, sciences et coups de gueule…]

Menu
😤 Ce billet a été édité le : 2023-08-30

Voici comment changer la date d’un fichier image (type JPEG) à partir de la date EXIF contenu dans le fichier.



Avec la commande « exiv2 »

  • Extrait du manuel de « exiv2 »
    NOM
      exiv2 – Outil de manipulation de métadonnées d’image
    
    SYNOPSIS
      exiv2 [options] [action] fichier …
    
    DESCRIPTION
      exiv2 est un programme pour lire et écrire des métadonnées d’image Exif, IPTC et XMP
      et des commentaires d’image. Les formats d’image suivants sont pris en charge :
    
    […]
    
    -v | --verbose
      Affichage verbeux
    
    […]
    
    mv | rename
      Renomme les fichiers et/ou définit les horodatages des fichiers en fonction de
      l’horodatage de création Exif.
      Utilise la valeur de la balise « Exif.Photo.DateTimeOriginal » ou, si elle n’est pas
      présente, « Exif.Image.DateTime » pour déterminer l’horodatage.
      Le format du nom de fichier peut être défini avec -r fmt, les options d'horodatage sont -t et -T.
    
    […]
    
    -T
      Définis uniquement l’horodatage du fichier en fonction de l’horodatage de création Exif,
      ne renomme pas le fichier (remplace `-k`). Cette option ne peut être utilisée qu’avec l’action
      `rename`.
      Remarque : sous Windows, vous aurez, peut-être, à configurer la variable d’environnement `TZ`
      pour que cette option fonctionne correctement.
    

Installation de « exiv2 »

La commande exiv2 ne fait pas nécessairement partie des commandes présentes, sous Linux, plus précisément les dérivés de Debian, elle s’installe à l'aide du paquet exiv2 :

sudo apt install -y exiv2


La syntaxe pour une seule image

Pour faire l’opération sur une seule image, la syntaxe est assez simple :

exiv2 -T rename image.jpg

La syntaxe pour un ensemble de dossier

Si vous souhaitez généraliser à un dossier (et ses fils récursivement) vous pouvez utiliser quelque chose comme ça :

find REPERTOIRE -type f -iname '*.jpg' -exec exiv2 -v -T rename {} \;

ou en définissant une fonction :

function change_file_created_date_from_exif {
  local -r dir="$1"

  find "${dir}" -type f -iname '*.jpg' -exec exiv2 -v -T rename {} \;
}


Avec la commande « exiftool »

La commande exiftool est outil très complet permettant de manipuler les données EXIF, l'insttation se fait à l'aide du paquet libimage-exiftool-perl, pour plus de détail sur l’installation d’ExifTool voir le billet 📷 Extraire les vignettes EXIF.

Pour changer la date d’une seule image, la syntaxe est n’est pas complètement triviale :

exiftool '-DateTimeOriginal>FileModifyDate' image.jpg

Pour traiter un dossier complet, vous pouvez utiliser la fonction suivante :

function change_file_created_date_from_exif {
  local -r dir="$1"

  find "${dir}" -type f -iname '*.jpg' -exec exiftool '-DateTimeOriginal>FileModifyDate' {} \;
}

On peut même se passer de la commande find, et ne modifier le fichier que si la date change :

function change_file_created_date_from_exif {
  local -r dir="$1"

  exiftool '-DateTimeOriginal>FileModifyDate' -r -if '$datetimeoriginal ne substr($filemodifydate,0,19)' -ext jpg "${dir}" || return $?
}

Notez que la syntaxe -FileModifyDate<DateTimeOriginal aura l'effet inverse, et mettra comme date de création de l'image la date de dernière modification sur le disque, ce qui peut également avoir du sens.



Et les vidéos ?

Certain formats vidéo inclus la notion de métadonnées, pensez à regarder la documentation de l’outil que vous avez choisi pour savoir s’il supporte le format vidéo que vous utilisez.



Liens

ᦿ


ℹ 2006 - 2023 | 🏠 Accueil du domaine | 🏡 Accueil du blog