web-dev-qa-db-fra.com

Comment exporter des photos Shotwell classées par date / heure de leur prise de vue?

Je fais un album avec des photos des caméras de plusieurs amis. Imaginons que la date et l'heure d'exposition EXIF ​​soient correctes dans tous les fichiers. Les noms de fichiers, cependant, ne sont pas alignés (par exemple, mon appareil photo démarre à IMG0001 mais l'appareil photo du téléphone de mon ami commence à pic1234.jpg, et mon propre téléphone commence à pic5678.jpg).

Existe-t-il un moyen avec Shotwell d'exporter les fichiers de tout le monde vers un répertoire ordinaire, avec les noms de fichiers réécrits afin que les images soient triées par ordre chronologique? Ensuite, lorsque je diaporama ces fichiers dans un autre ordinateur, avec une autre visionneuse d'images (ou avec Shotwell lui-même en mode de navigation sur les fichiers), ils s'afficheront dans le bon ordre chronologique.

Exemple. Si j'ai ces six fichiers ...

  1. Mon appareil photo: IMG_0001.JPG - Date d'exposition EXIF ​​ 25/12/2012 12:05:00
  2. Mon appareil photo: IMG_0002.JPG - Date d'exposition EXIF ​​ 25/12/2012 12:11:00
  3. Mon propre téléphone: pic5678.jpg - Date d'exposition EXIF ​​ 25/12/2012 12:09:00
  4. Mon propre téléphone: pic5679.jpg - Date d'exposition EXIF ​​ 25/12/2012 12:15:00
  5. Téléphone de l'ami: pic1234.jpg - Date d'exposition EXIF ​​ 25/12/2012 12:08:00
  6. Téléphone de l'ami: pic1235.jpg - Date d'exposition EXIF ​​ 25/12/2012 12:18:00

... alors je voudrais les exporter avec des noms de fichiers comme ceux-ci:

  1. 20121225_120500-IMG_0001.JPG
  2. 20121225_120800-pic1234.jpg
  3. 20121225_120900-pic5678.jpg
  4. 20121225_121100-IMG_0002.JPG
  5. 20121225_121500-pic5679.jpg
  6. 20121225_121800-pic1235.jpg

afin qu'ils s'affichent dans le bon ordre lors de la navigation avec n'importe quel navigateur d'images.

Le script suivant fait l'affaire, mais n'est pas intégré à Shotwell, ce qui est le point de la question, et échouera (gracieusement) si les images ne sont pas exportées avec des données Exif:

#!/usr/bin/python

import pyexiv2
import sys
import shutil

def getTimestamp(f):
  metadata = pyexiv2.ImageMetadata(f)
  metadata.read()
  try:
    d = metadata['Exif.Image.DateTime']
    return d.value.strftime('%Y%m%d%H%M%S')
  except Exception as e:
    return "00000000000000"

if len(sys.argv) > 1:
  for f in sys.argv[1:]:
    try:
      timestamp = getTimestamp(f)
      prefix = "%s_" % timestamp
      if f[0:len(prefix)] == prefix:
        print "File %s was already renamed, not renaming again" % (f)
      else:
        nn = "%s%s" % (prefix, f)
        shutil.move(f, nn)
        print "File %s renamed to %s" % (f, nn)
    except Exception as e:
      print "File %s not renamed (%s)" % (f, e)
else:
  print "Usage: %s <JPG files with Exif tags>" % (sys.argv[0])
2
Dani CS

L'approche la plus simple consistera à la diviser en deux parties.

  • Tout d'abord, exportez toutes les images de Shotwell vers un dossier.

  • Deuxièmement, utilisez pyrenamer pour donner aux fichiers le modèle de dénomination que vous souhaitez.

Voici un exemple d'utilisation du pyrenamère:

pyrenamer ui

Voici le code que j'ai utilisé pour essayer de faire correspondre votre exemple dans votre question:

{imageyear}{imagemonth}{imageday}_{imagehour}{imageminute}{imagesecond}_{num3+1}.jpg  

Il produit des noms de fichiers qui ressemblent à ceci:

pyrenamer output sample

Notez que vous pouvez ajouter des caractères entre les valeurs entre accolades (comme le trait de soulignement entre {imageday} et {imagehour}), pour rendre la sortie plus facile à lire.

Le dernier {num3 + 1} bit est facultatif mais aide si vous avez deux photos prises à la même seconde et rend le tout plus facile à lire.

Si vous faites cela et constatez qu'une ou plusieurs horloges de l'appareil sont éteintes, vous pouvez tilisez Shotwell pour modifier l'heure/la date , puis refaites l'étape pyrenamer pour que tout soit en parfait ordre. Cela est particulièrement utile pour quelque chose comme un mariage où les gens viennent à l'événement à partir de différents fuseaux horaires, et les photos en panne semblent totalement fausses.

Enfin, n'oubliez pas d'inclure l'extension de fichier à la fin, ou elle sera supprimée et peut provoquer d'autres problèmes .

3
Tom Brossman