web-dev-qa-db-ja.com

Shotwellで撮影した日付/時間順に写真をエクスポートするにはどうすればよいですか?

友達のカメラの写真を集めたアルバムを作っています。すべてのファイルでEXIFの公開日時が正しいと想像してみましょう。ただし、ファイル名は揃っていません(たとえば、カメラはIMG0001から始まりますが、友人の電話カメラはpic1234.jpgから始まり、自分の電話はpic5678.jpgから始まります)。

Shotwellを使用して、ファイルを全員からプレーンディレクトリにエクスポートする方法はありますか。画像が時系列順に並べ替えられるようにファイル名が書き換えられていますか?次に、これらのファイルを別のコンピューター、別の画像ビューアー(またはファイルブラウズモードのShotwell自体)でスライドショーすると、正しい年代順に表示されます。

これら6つのファイルがある場合...

  1. 私のカメラ:IMG_0001.JPG-EXIF露出日2012/12/25 12:05:00
  2. 私のカメラ:IMG_0002.JPG-EXIF露出日2012/12/25 12:11:00
  3. 自分の電話:pic5678.jpg-EXIFの公開日2012/12/25 12:09:00
  4. 自分の電話:pic5679.jpg-EXIFの公開日2012/12/25 12:15:00
  5. 友達の電話:pic1234.jpg-EXIF公開日2012/12/25 12:08:00
  6. 友達の電話:pic1235.jpg-EXIF公開日2012/12/25 12:18:00

...次に、次のようなファイル名でエクスポートします。

  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

画像ブラウザで閲覧するときに正しい順序で表示されるようにします。

次のスクリプトはトリックを実行しますが、問題のポイントであるShotwellに統合されておらず、画像が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

最も簡単な方法は、これを2つの部分に分割することです。

  • まず、Shotwellからすべての画像を1つのフォルダーにエクスポートします。

  • 次に、 pyrenamer を使用して、ファイルに必要な命名パターンを指定します。

ピレナマーの使用方法の例を次に示します。

pyrenamer ui

これが私があなたの質問のあなたの例と一致しようとするのに使ったコードです:

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

次のようなファイル名が生成されます。

pyrenamer output sample

中括弧の値の間に文字({imageday}と{imagehour}の間のアンダースコアなど)を追加して、出力を読みやすくできることに注意してください。

最後の{num3 + 1}ビットはオプションですが、たまたま2枚の写真を同時に撮った場合に役立ち、全体をはるかに読みやすくします。

これを行って、1つ以上のデバイスクロックがオフになっている場合は、 Shotwellを使用して時刻/日付を変更 してから、ピレナマーステップを再実行して、すべてを完全な順序に保つことができます。これは、結婚式のように人々がさまざまなタイムゾーンからイベントに来ており、順序が正しくない写真が完全に間違っているように見える場合に特に役立ちます。

最後に、ファイル拡張子を最後に含めることを忘れないでください。そうしないと、削除されて 他の問題が発生する可能性があります になります。

3
Tom Brossman