友達のカメラの写真を集めたアルバムを作っています。すべてのファイルでEXIFの公開日時が正しいと想像してみましょう。ただし、ファイル名は揃っていません(たとえば、カメラはIMG0001から始まりますが、友人の電話カメラはpic1234.jpgから始まり、自分の電話はpic5678.jpgから始まります)。
Shotwellを使用して、ファイルを全員からプレーンディレクトリにエクスポートする方法はありますか。画像が時系列順に並べ替えられるようにファイル名が書き換えられていますか?次に、これらのファイルを別のコンピューター、別の画像ビューアー(またはファイルブラウズモードのShotwell自体)でスライドショーすると、正しい年代順に表示されます。
例これら6つのファイルがある場合...
...次に、次のようなファイル名でエクスポートします。
画像ブラウザで閲覧するときに正しい順序で表示されるようにします。
次のスクリプトはトリックを実行しますが、問題のポイントである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つの部分に分割することです。
まず、Shotwellからすべての画像を1つのフォルダーにエクスポートします。
次に、 pyrenamer を使用して、ファイルに必要な命名パターンを指定します。
ピレナマーの使用方法の例を次に示します。
これが私があなたの質問のあなたの例と一致しようとするのに使ったコードです:
{imageyear}{imagemonth}{imageday}_{imagehour}{imageminute}{imagesecond}_{num3+1}.jpg
次のようなファイル名が生成されます。
中括弧の値の間に文字({imageday}と{imagehour}の間のアンダースコアなど)を追加して、出力を読みやすくできることに注意してください。
最後の{num3 + 1}ビットはオプションですが、たまたま2枚の写真を同時に撮った場合に役立ち、全体をはるかに読みやすくします。
これを行って、1つ以上のデバイスクロックがオフになっている場合は、 Shotwellを使用して時刻/日付を変更 してから、ピレナマーステップを再実行して、すべてを完全な順序に保つことができます。これは、結婚式のように人々がさまざまなタイムゾーンからイベントに来ており、順序が正しくない写真が完全に間違っているように見える場合に特に役立ちます。
最後に、ファイル拡張子を最後に含めることを忘れないでください。そうしないと、削除されて 他の問題が発生する可能性があります になります。