Соберите дату, сделанную из фотографий и сделайте график времени - Фотопедия
4 голосов
/ 26 февраля 2014

Я хотел видеть мою тенденцию цифрового фотографирования за эти годы. Моя гипотеза заключается в том, что каждый раз, когда я приобретаю новое устройство (фотоаппарат, телефон и т. Д.), Происходит подъем, а с появлением камерофонов - повышение.

Самая простая идея, которая у меня была, заключалась в том, чтобы собрать даты каждой фотографии в заданном наборе фотографий (папка с подпапками), а затем подсчитать фотографии для каждой даты.

Затем выведите эту информацию в Excel или другом инструменте. Желательно в виде шкалы времени с увеличением или уменьшением данных, т. Е. Изменять оси с дня на неделю, месяца, квартала или года.

Есть ли какая-нибудь утилита, которая делает это уже очень просто?

Ответы [ 3 ]

2 голосов
/ 27 февраля 2014

У меня был скрипт, который делал что-то еще, но его легко можно изменить, чтобы сделать то, что вы хотите (по крайней мере, в начальной части):

from PIL import Image
from PIL.ExifTags import TAGS
import sys
import os
import getopt

def get_exif_data(fname):
    """Get embedded EXIF data from image file."""
    ret = {}
    try:
        img = Image.open(fname)
        if hasattr( img, '_getexif' ):
            exifinfo = img._getexif()
            if exifinfo != None:
                for tag, value in exifinfo.items():
                    decoded = TAGS.get(tag, tag)
                    ret[decoded] = value
    except IOError:
        print 'IOERROR ' + fname
    return ret

def main(argv):
    path = ''
    outputfile = ''
    try:
        opts, args = getopt.getopt(argv,"hp:o:",["path=","ofile="])
    except getopt.GetoptError:
        print argv[0] + ' -p <path> -o <outputfile>'
        print 'where:'
        print '\t<path> is the root directory path for all the images'
        print '\t<outputfile> is the CSV file to write to'
        sys.exit(2)
    for opt, arg in opts:
        if opt == '-h':
            print argv[0] + ' -p <path> -o <outputfile>'
            sys.exit()
        elif opt in ("-p", "--path"):
            path = arg
        elif opt in ("-o", "--ofile"):
            outputfile = arg

    if path == "" or outputfile == '':
        print 'error: arguments missing'
        sys.exit()
    if not os.path.isdir(path):
        print 'error: path entered is not a directory'
        sys.exit()
    photoCount = {}
    for root, dir, files in os.walk(path):
        for item in files:
            if item.lower().endswith(".jpg"):
                exif = get_exif_data(root + "\\" + item)
                if 'DateTime' in exif.keys():
                    date = exif['DateTime'][:10].replace(":","-")
                    if date in photoCount.keys():
                        photoCount[date] = photoCount[date] + 1
                    else:
                        photoCount[date] = 1

    outcsv = open( outputfile, 'w' )
    for key in photoCount.keys():
        outcsv.write(key + ',' + str(photoCount[key]) + '\n')

if __name__ == "__main__":
    main(sys.argv[1:])

Когда я запускаю это в моей папке с образцами (с несколькими папками изображений), я получаю:

2011:06:21,6
2011:03:12,12
2012:03:09,168
2012:03:24,302
2011:08:27,58
2012:01:30,11
2012:02:13,848
2012:01:29,41
2012:01:21,7
2011:11:20,6
2012:01:24,25
2012:01:22,33

Конечно, это нужно отсортировать и все, но это можно открыть в Excel и манипулировать с этого момента.

1 голос
/ 26 февраля 2014

Вы можете использовать программное обеспечение DAM, которое будет собирать все метаданные из ваших изображений и отображать статистическую информацию о том, кем вы часто делали фотографии, какими камерами, объективами и многими другими полезными данными:

enter image description here

0 голосов
/ 26 февраля 2014

Это действительно зависит от того, какая у вас ОС и какая у вас.

Если вы работаете в Lnux, вы можете использовать рекурсивный скрипт оболочки для считывания дат из файлов изображений и, следовательно, для сбора данных (без какого-либо дополнительного программного обеспечения).

Если у вас есть Adobe Lightroom, вы можете сортировать изображения по дате съемки (если я не ошибаюсь). -> Перейти в каталог, все фото -> Метаданные -> дата Очевидно, как предположил Мурат, многие другие фоторедакторы могут сделать то же самое.

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

...