EXIF情報の日付で画像を並べ替え、名前を変更する

EXIF情報の日付で画像を並べ替え、名前を変更する

写真フォルダがごちゃごちゃしているので、EXIF 情報の日付に従って並べ替え、日付に応じて名前を変更したいです (001.jpg、002.jpg など)。

Linux でこれを実行するにはどうすればよいですか? これまで、いくつかの基本的な一括処理タスク (変換やサイズ変更など) に ImageMagick を使用したことがありますが、このタスクに使用することは可能ですか?

答え1

使用できますexifツール何らかの理由で、オンライン マニュアルには、重要なヒントを与えてくれる「名前の変更例」セクションが含まれていません。

JPG のみのファイルの場合は、次のコマンド呼び出しで処理が実行されます。

exiftool -r '-FileName<CreateDate' -d '%Y-%m-%d/%H_%M_%S%%-c.%%le' <yourFolder>

説明:

  • -r再帰用です
  • '-FileName<CreateDate'exiftoolにEXIFタグに応じてファイル名を変更するように指示しますCreateDate(ただし、次のような他の方法を試すこともできますModifyDate
  • -d '%Y-%m-%d/%H_%M_%S%%-c.%%le'日付ソース " CreateDate" からファイル名文字列を構築する方法を指定します (" %-c" は、ファイルの衝突が発生した場合にカウンタを追加します。" %le" は「小文字のファイル拡張子」を表します)
  • 注記-FileName<...:ここでは、ファイルの名前を変更して 1 つの手順で別のフォルダーに移動するために" " を使用しました。マニュアルで-Directory<...は、フォルダー操作には " " 構文を使用する必要があると指摘されています。ただし、私の場合はこの方法でうまくいきました。

この強力なツールのマニュアルを読むのに少し時間を費やす必要があります。もっと短い方法があるかもしれません:D

答え2

この無料製品をお試しください:AmoK Exif ソーター

答え3

最も簡単な方法は、ファイルを jbrout にインポートすることです。その後、(オプションで) すべてのファイルの名前を時間に応じた名前に変更できます。または、名前を変更する必要がまったくない (jbrout で十分) 場合もあります。

答え4

Debian Lenny で動作させるには、次を試してください:

import pyexiv2, sys, os, time, datetime, random
dirname = sys.argv[1]
flist=os.listdir(dirname)
dic = dict()
for fname in flist:
    image = pyexiv2.Image(sys.argv[1]+'/'+fname) 
    #metadata = pyexiv2.ImageMetadata(sys.argv[1]+'/'+fname)
    #metadata.read()
    image.readMetadata() 
    tag = image['Exif.Image.DateTime']
    timestamp = int(time.mktime(tag.timetuple()))
    #print fname, ' ', tag.value, ' ', timestamp
    try:
    dic[timestamp] = fname
    except:
    print fname, ' not processed.'

keys = dic.keys()
keys.sort()
i = 0 
for k in keys:
    os.rename(sys.argv[1]+'/'+dic[k], sys.argv[1]+'/'+str(i)+'.jpg')
    i+=1

関連情報