Un pense-bête

Trucs de geek : exif

Nous allons voir dans cet article les caractèritiques du programmes exif et comment il est possible de l'utliser dans le traitements de ses photos.

Si comme moi vous prennez pas mal de photos vous pouvez parfois trouver avantage à les traiter par des scripts bash. Sur le nom cela ne pose pas de soucis mais quand vous voulez travailler sur les caractèristiques de l'image il vous faut aller lire les informations exif.

Il vous faut tout d'abord installer le programme en question :

$ sudo apt-get install exif

L'utilisation est simple. Exemple :

$ exif DSV2392.JPG

qui donne :

Marqueurs EXIF dans'DSCF2394.JPG' (ordre des octets 'Intel') :
--------------------+----------------------------------------------------------
Marqueur            |Valeur
--------------------+----------------------------------------------------------
Fabricant           |FUJIFILM
Modèle              |X20
Orientation         |En haut à gauche
X-Resolution        |72
Y-Resolution        |72
Unité de la résoluti|pouces
Logiciel            |Digital Camera X20 Ver1.02
Date et heure       |2013:11:19 19:52:14
Positionnement YCbCr|Co-sited
Copyright           |[Aucun] (Photographe) - [Aucun] (Éditeur)
PRINT Image Matching|106 octets de données indéfinies
Compression         |Compression JPEG
Orientation         |En haut à gauche
X-Resolution        |72
Y-Resolution        |72
Unité de la résoluti|pouces
Positionnement YCbCr|Co-sited
Temps d'exposition  |1/550 sec.
F-Number            |f/2,2
Exposure Program    |Programme normal
Valeurs de vitesse I|200
Version d'exif      |Version d'exif 2.3
Date and Time (Origi|2013:11:19 19:52:14
Date and Time (Digit|2013:11:19 19:52:14
Components Configura|Y Cb Cr -
Bits compressés par |4,0
Shutter Speed       |9,10 EV (1/548 sec.)
Ouverture           |2,30 EV (f/2,2)
Luminosité          |4,15 EV (60,83 cd/m²)
Correction d'exposit|-1,33 EV
Valeur d’ouverture m|2,00 EV (f/2,0)
Mode de mesure      |Motif
Source lumineuse    |Inconnu
Flash               |Flash did not fire, compulsory flash mode
Longueur focale     |7,9 mm
Note du créateur    |862 octets de données indéfinies
FlashPixVersion     |FlashPix version 1.0
Espace des couleurs |sRGB
Pixel X Dimension   |2816
Pixel Y Dimension   |1584
Focal Plane X-Resolu|3200
Focal Plane Y-Resolu|3200
Unité de résolution |Centimètre
Méthode d'acquisitio|Sonde de couleur à un capteur
Source du fichier   |DSC
Type de scène       |Photographié directement
Rendu personnalisé  |Traitement normal
Mode d'exposition   |Exposition automatique
Balance des blancs  |Balance des blancs automatique
Type de capture de l|Standard
Netteté             |Normal
Échelle de distance |Inconnu
Interoperability Ind|R98
Interoperability Ver|0100
--------------------+----------------------------------------------------------

On a ainsi un paquet dinformations sur l'image en question.

Dans les scripts on va utiliser un autre utilitaire de la même veine : exiftool afin d'extaire les informations dont on a besoin.

L'utilisation est assez complex. La page de man est terriblement longue mais elle se termine avec quelques exemples bien utiles.

Dans une version primaire on peut récupérer les informations comme ceci :

#!/bin/sh
w=$(exiftool DSCF2394.JPG | grep 'Exif Image Width' | awk -F': ' '{print $2}')
h=$(exiftool DSCF2394.JPG | grep 'Exif Image Height' | awk -F': ' '{print $2}')

On a bien la taille de l'image dans les deux variables. On peut les utiliser pour renommer le fichier ou pour le réduire de moitié ou tout simplement le tester pour repérer les images de taille importante.

Autre technique :

$ exiftool -s -ImageSize DSCF2394.JPG

qui donne

$ ImageSize                       : 2816x1584

Pour te temps d'exposition de la photo, on utiliserait la commande suivante :

$ exiftool -s --ExposureTime DSCF2394.JPG

qui nous donne :

$ ExposureTime                    : 1/550

Mais il faut savoir que exiftool n'est pas qu'un utilitaire d'information sur les fichiers, c'est un utilitaire de manipulation d'images particulièrement puissant. Voici quelques exemples pour ne pas s'y tromper.

Pour renommer des images : exiftool -filename=nouveau_nom.jpg dossier/ancien_nom.jpg

Pour dispatcher des images dans des répertoires en fonction de leur extension : exiftool -directory=%e Wallpapers/. Cela vous copie les images contenu dans le dossier Wallpapers dans des dossier créé en fonction des extensions trouvées. Cela fait la différence entre les majuscules et les minuscules.

Attention c'est fort en chocolat !

Pour répartir des images dans des dossiers en fonction de leur date de prise de vue : exiftool '-Directory<DateTimeOriginal' -d %Y/%m/%d dir. Cela crée des dossiers Année/Mois/Jour en fonction de la date lue et cela y copie les fichiers.

La même chose mais avec un copier à la place du déplacer : exiftool -o . '-Directory<DateTimeOriginal' -d %Y/%m/%d Wallpapers

Fait le 29/04/2015