Как найти все наборы фотографий, снятых в один и тот же день по годам? - Фотопедия
6 голосов
/ 18 марта 2014

Я хочу создать альбом воспоминаний и для этого хотел найти все группы фотографий, которые относятся к одной и той же дате, чтобы я мог видеть, какую тенденцию я могу показать за эти годы. Это похоже на «Сегодня в прошлые годы» ... и т. Д. Это идеально подходит для дней рождения, юбилеев ... и т. Д.

Я посмотрел на Как найти все фотографии, сделанные в апреле - в любой апрель? , но они работают только в выбранную дату, не получая набор фотографий и дат.

см. Сценарий в моем предыдущем вопросе , который может сработать.

С учетом входного набора изображений 2004–2014 гг.

В идеале вывод должен быть примерно таким:

April 01 - Found: [img1, img2, img3 ...] Missing: []
January 31 - Found: [img34, img342, img54...] Missing: [2009,2004]

По сути, мне нужно иметь возможность сортировать по количеству MISSING, чтобы я мог фильтровать по MISSING = 0 (т. Е. По найденным изображениям за все годы) или MISSING <2 (без пары лет) ... и т.п. </p>

Может быть, это можно сделать с помощью существующего программного обеспечения?

Ответы [ 3 ]

4 голосов
/ 02 апреля 2014

Вы должны отделить три проблемы программирования. (Я использую команды Linux, но они также работают с Cygwin и MinGW).

  1. Поиск и распечатка файлов. Это можно сделать с помощью команды find -iname "..." через папки.

  2. Извлечение данных EXIF. Это можно сделать с помощью exiftool.

1 + 2 может быть легко связан с XARGS. Например. Эта команда выводит список всех тегов, связанных с «Дата» (это одна строка, разрыв строки не предназначен). Вы должны выбрать один для дальнейшей обработки.

find -iname "* .NEF" -print0 | xargs -0 -I {} exiftool -d "% Y,% m,% d" -Все {} | grep "Дата"

например. Вы можете выбрать «Создать дату» и отфильтровать ее в exiftool.

Кстати, если вы хотите просмотреть все информацию о времени для файла, используйте:

exiftool -time: all -a -G0: 1 -s myimage.NEF

И если все ваши файлы находятся в подкаталогах, вы можете использовать опцию -r (и, очевидно, пропустить команду find).

Теперь эта команда выводит ВСЕ доступные данные времени для вашей постобработки:

find -iname "* .NEF" -print0 | xargs -0 -I {} exiftool -csv -time: all -filename -a -G0: 1 {}> outputlist.txt

3. Сортировка, фильтрация. Теперь это должно быть легко, используйте ваши ограничения.

Самое простое - вытащить данные в Excel и применить фильтры, или, что еще лучше, импортировать в базу данных SQL и запросить все, что вы хотите запросить. Вы увидите, что в разных файлах содержится разное количество меток времени, и вам нужно будет их согласовать.

Альтернативой является использование опции -X вместо -csv и генерация вывода XML. Это может быть или не быть проще для постобработки для вас.

Теперь, если вы уверены , что, например, CreateDate - это то, что вам нужно, вы можете попробовать это:

find -iname "* .NEF" -print0 | xargs -0 -I {} exiftool -T -d "# Год #% Y # # Месяц #% m # # День #% d #" -filename -CreateDate {} | grep "# Месяц # 05 #" | grep "# Day # 07 #"

Я думаю, очевидно, как я приправил начальную команду find + exiftool. Он найдет любые изображения с датой создания, имеющей месяц == май и день == 7.

Удачи! ; -)

0 голосов
/ 03 апреля 2014

Основываясь на ответе Тфуто, я смог создать файл CSV с датой, созданной для моих 17000 изображений:

exiftool . -ext .jpg -r -csv -T -CreateDate -G -d %Y-%m-%d > test.csv

Это заняло 22 минуты. Я измерил это с помощью powershell measure-command {cmd above} Затем я использовал Excel для анализа файла, чтобы получить что-то вроде следующего:

DayMonth    MonthDay    YearsMissing    YearCount
01-Jan      01-01       20              6
26-Feb      02-26       21              5
08-Apr      04-08       21              5
12-Jun      06-12       21              5
31-Dec      12-31       21              5
03-Feb      02-03       22              4
13-Feb      02-13       22              4

Это ясно дает мне то, что я хочу, и вы можете видеть даты, в которые у меня были фотографии последовательно на протяжении многих лет.

Не думаю, что я могу прикрепить файл Excel здесь, поэтому дайте мне знать, если он вам нужен, и я могу отправить его вам по почте. Я решил проблему с помощью грубой силы, так как у нас есть максимум 366 дней (високосных лет) и количество покрытых X лет. (с момента изобретения exif в 93 году, 21 год или 80 лет на протяжении жизни человека). Я просто создал такую ​​таблицу и в каждой проверяю, существует ли эта дата в нашем наборе данных, если да, пометьте ее, если нет, оставьте ее пустой. В конце я могу посчитать оценки для каждой даты, чтобы получить график выше. Я также создаю сводную таблицу, которая показывает количество файлов для каждого дня и года, что позволяет проводить дальнейший анализ и составление графиков. На самом деле это также отвечает на мой предыдущий вопрос Excel Pivottable

Это дает мне общие даты, но не сами изображения, я должен затем отфильтровать данные в соответствии с интересующим меня Месячным Днем и увидеть список изображений. Я также создал гиперссылки в Excel для изображений и папок, чтобы я мог щелкнуть мышью, чтобы просмотреть их напрямую.

Я бы подумал, что это упражнение было бы намного проще, если бы я мог написать плагин для приложения каталога (например, Picasa). Вот почему важно иметь открытый доступ к вашим базам данных (API).

В нынешнем виде это не очень хорошее решение для начинающих компьютерщиков. Я думаю, что все еще есть возможности для улучшения, чтобы создать простое приложение / скрипт, который делает это для пользователя. (Может быть, Damnion или Picasa или что-то еще может сделать это.) См. Некоторые мобильные приложения

0 голосов
/ 25 марта 2014

Picasa от Google, бесплатная программа, организует все ваши фотографии по дате. По завершении поиска всех ваших фотографий вы сможете перейти к определенной дате и найти все фотографии, сделанные в этот день.

...