cClaude.rocks ☕ Le blog

[Nouvelles technologies du libre, 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 - 2024 | 🏠 Accueil du domaine | 🏡 Accueil du blog