Вид и переименовывает изображения по дате в информации EXIF

У меня есть путаница в моей фото папке; я хочу отсортировать их согласно дате в информации EXIF и переименовать согласно дате (как 001.jpg, 002.jpg и так далее).

Как я могу сделать это в Linux? Я использовал ImageMagick для некоторых основных объемных задач обработки прежде (преобразование и изменение размеров, и т.д.), действительно ли возможно использовать его для этой задачи?

9
задан 09.07.2011, 04:41

3 ответа

Попробуйте этот бесплатный продукт: сортировщик AmoK Exif.

5
ответ дан 07.12.2019, 13:07

Я сделал маленькое и не очень оптимизированный сценарий Python, что в я думаю, делает то, что Вы предназначаете:

1 import pyexiv2, sys, os, time, datetime, random
2 dirname = sys.argv[1]
3 flist=os.listdir(dirname)
4 dic = dict()
5 for fname in flist:
6     metadata = pyexiv2.ImageMetadata(sys.argv[1]+'/'+fname)
7     metadata.read()
8     tag = metadata['Exif.Image.DateTime']
9     timestamp = int(time.mktime(tag.value.timetuple()))
10     #print fname, ' ', tag.value, ' ', timestamp
11     try:
12         dic[timestamp] = fname
13     except:
14         print fname, ' not processed.'
15 
16 keys = dic.keys()
17 keys.sort()
18 i = 0 
19 for k in keys:
20     os.rename(sys.argv[1]+'/'+dic[k], sys.argv[1]+'/'+str(i)+'.jpg')
21     i+=1
1
ответ дан 07.12.2019, 13:07

Чтобы заставить его работать в 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
1
ответ дан 07.12.2019, 13:07

В php я сделал что-то вроде этого:

<?php

$path = "./path/to/images";
$files = scandir($path);

foreach ( $files as $file )
{
    if ( $file[0] === "." )
    {
        continue;
    }
    $ext = end(explode(".", $file));

    $suffix = "image";

    $exif = exif_read_data($path."/".$file, 'EXIF');
    $datetime = str_replace("/","-", $exif['DateTimeDigitized']);

    rename($path."/".$file, $path."/".$datetime.$suffix.".".$ext);
}
1
ответ дан 07.12.2019, 13:07

Теги

Похожие вопросы