Gestionnaire de Photos
Notre but va être de réaliser un outil permettant de renommer les
photos en fonction de la date et de l'heure de prise de vue.
Phase préparatoire
Ce projet est à réaliser sur une machine Linux ubuntu.
Vous aurez besoin de l'outil exif
qui est disponible sous linux ubuntu.
Pour l'installer, depuis une machine ayant accès à internet et sur
laquelle le proxy de l'université a été définir :
apt-get update
apt-get install exif
Vous devrez ensuite récupérer le fichier suivant : photos.zip
désarchivez le.
regardez ensuite ce que vous donne la commande exif -i appliquée à une photo :
exif -i DSCF2734.JPG
Marqueurs EXIF dans'DSCF2734.JPG' (ordre des octets 'Intel') :
------+------------------------------------------------------------------------
Marque|Valeur
------+------------------------------------------------------------------------
0x010f|FUJIFILM
0x0110|FinePix F30
0x0112|Top-left
0x011a|72
0x011b|72
0x0128|pouces
0x0131|Digital Camera FinePix F30 Ver1.00
0x0132|2006:11:19 17:40:44
0x0213|Co-sited
0x8298|[Aucun] (Photographe) - (Editeur)
0xc4a5|28 bytes undefined data
0x0103|Compression JPEG
0x0112|Top-left
0x011a|72
0x011b|72
0x0128|pouces
0x0213|Co-sited
0x829a|1/210 sec.
0x829d|f/2,8
0x8822|Programme normal
0x8827|200
0x9000|Exif version 2.2
0x9003|2006:11:19 17:40:44
0x9004|2006:11:19 17:40:44
0x9101|Y Cb Cr -
0x9102|2,0
0x9201|7,76 EV (1/216 sec.)
0x9202|3,00 EV (f/2,8)
0x9203|4,86 EV (99,50 cd/m²)
0x9204|0,00 EV
0x9205|3,00 EV (f/2,8)
0x9207|Motif
0x9208|Inconnu
0x9209|Flash did not fire, compulsory flash mode
0x920a|8,0 mm
0x927c|354 bytes undefined data
0xa000|FlashPix version 1.0
0xa001|sRGB
0xa002|3024
0xa003|2016
0xa20e|3932
0xa20f|3932
0xa210|Centimère
0xa217|Sonde de couleur à un capteur
0xa300|DSC
0xa301|Directly photographed
0xa401|Processus normal
0xa402|Exposition automatique
0xa403|Balance des blancs automatique
0xa406|Standard
0xa40a|Normal
0xa40c|Inconnu
0x0001|R98
0x0002|0100
------+------------------------------------------------------------------------
Les données EXIF contiennent une vignette (8388 octets).
L'entrée 0x9003 nous donne la date/heure de prise de vue (cf
http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif/datetimeoriginal.html).
C'est celle que nous allons utiliser.
Premier travail
Dans un premier temps, on vous demande d'écrire une fonction prenant un
nom de fichier (chemin inclus) en paramètre et le renommant sous la
forme aaaa-mmjj-hhmmss-nom.
Ainsi, la photo de l'exemple ci-dessus sera renommée en 2006-1119-174044-DSCF2734.JPG.
second travail
On vous demande d'écrire une fonction capable de traîter tous les
fichiers d'un dossier fourni en argument, fichier dont le nom commence
par l'expression DSCF et qui sont des fichiers jpeg.
Indication: pensez à la commande file plutôt que de vous fier à l'extension du nom de fichier.
troisième travail
écrire une fonction capable d'effectuer le traîtement ci-dessus sur les
fichiers d'un dossier mais aussi récursivement sur les dossiers inclus
dans le dossier fourni en argument et ainsi de suite.
quatrième travail
Utilisez les fonctions ci-dessus pour réaliser un script de traitement
de noms de fichiers photos. Votre script aura comme arguments l'option
-R si le traitement doit être récursif, les noms des fichiers ou
dossiers à traiter et toute option qui vous paraîtra utile (par ex. on
devrait pouvoir préciser le modèle des noms de fichiers à traîter car
certains appareils photos ne génèrent pas de fichiers dont le nom
commence par DSCF mais par P).
à rendre :
- script commenté
- manuel au format unix
une démonstration de votre travail devra être réalisée devant l'enseignant qui vous encadre.