Сортировка в режиме серийной съемки / непрерывная съемка фотографий в папки - Фотопедия
1 голос
/ 09 февраля 2020

Может быть, этот вопрос задавался раньше, но сейчас 2020, и, возможно, есть что-то новое в inte rnet:))

Я делаю фотографии в режиме серийной съемки с моей камерой. Но их так сложно отсортировать из-за количества изображений. Также я работаю над Lightroom Classi c, и мой компьютер r не может обработать столько фотографий, открытых за один раз. То, что я ищу для r - это программное обеспечение r, которое может / будет группировать фотографии, сделанные с интервалом в секунды ( 5 секунд для r пример ), и поместить их в один folde r.

Fo r Например, если есть 30 фотографий, и первая была сделана в 10:10:15, 10-я в 10:10:20 и другие r были сделаны после r 10:10:21. В этом случае будет две папки: одна с фотографиями между 10:10:15 и 10:10:20 и вторая папка r с остальными.

Я знаю, что в Lightroom есть функция simila r, но она мне не помогает, мне нужны папки:))

Заранее спасибо!

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

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Может быть, вы найдете кого-нибудь, кто написал бы сценарий.

Предупреждение: перемещение файлов необходимо выполнить перед импортом в Lightroom, иначе синхронизация с ним будет потеряна.

В python выглядит как

""" 
Tool for the management of photograph files taken in burst

Creates a sub directory for each burst of images
Moves all the files of images taken in a burst to the directory they belong

A burst is defined as the set of files for which 
the times they have been taken do not have a gap of more of  a delay

Author: hpchavaz
License: MIT Henri-Pierre Chavaz, 2020, https://hpchavaz-photography.blogspot.com/

"""
from sys import exit
from os import listdir, mkdir, rename
from os.path import exists, isfile, join, splitext
from shutil import move
from datetime import datetime, timedelta
from exif import Image

# the path to the files
mypath = "J:\DATA\DEV\Python\VS CODE\image\Burst" 

""" Returns the exif datatime_original attribute of an image file if exists or None """
def getimagedate(image):
    while True:
        try: 
            datestr = getattr(image, "datetime_original")
            date = datetime.strptime(datestr, '%Y:%m:%d %H:%M:%S')
            break
        except:
            date= None
            break
    return date


""" Make an ordered list of files with an exif datatime_original attribute """
datedexifimages = []
for fn in [f for f in listdir(mypath) if isfile(join(mypath, f))]:
    with open(join(mypath, fn), 'rb') as image_file:
        image = Image(image_file)
        if image.has_exif:
            date = getimagedate(image)
            if date:
                datedexifimages.append([fn, date])
datedexifimages.sort(key= lambda it: it[1])

""" To facilitate validation before the real commands are played
the latter are kept in lists """ 
MkdirList = []   # the list of folders to create
MoveList = []    # the list of files to move
ErrorList = []   # the list of errors (existing files or folders)
PrettyList = []  # the list to print for validation

CurBurstFolderName = "" # the name of folder for the the curent burst

""" Update lists for a new burst  """
def newburst(imgItem):
    global CurBurstFolderName
    nbfn = join(mypath, splitext(imgItem[0])[0])
    if exists(nbfn):
        ErrorList.append("Folder: "+ nbfn + " already exists")
    else:
        CurBurstFolderName = nbfn
        MkdirList.append(nbfn)
        PrettyList.append("NEW BURST: "+ nbfn)

""" Update lists for a new file in a burst """
def inburst(imgItem):
    global CurBurstFolderName
    if CurBurstFolderName != "":
        nfn= join(CurBurstFolderName, imgItem[0])
        if exists(nfn):
            ErrorList.append("Folder: "+ CurBurstFolderName + " : File; " + nfn + "already exists")
        else:
            MoveList.append([join(mypath, imgItem[0]), nfn])
            PrettyList.append("    > "+ imgItem[0]+ " >  " + nfn)

""" Create the lists by collecting image in same burst """
delta = timedelta(0, 1) 
if len(datedexifimages) >= 1:
    burst = False
    for ind in range(1, len(datedexifimages)-1):
        if (datedexifimages[ind][1] - datedexifimages[ind - 1][1]) >= delta:
            burst = False
        else:
            if burst == False: 
                newburst(datedexifimages[ind - 1])
                inburst(datedexifimages[ind - 1])
                burst = True
            inburst(datedexifimages[ind])


print("------------- MkdirList -----------")
[print(i) for i in MkdirList ]
print("------------- MoveList -----------")
[print(i[0], " > ", i[1]) for i in MoveList ]
print("------------- ErrorList -----------")
[print(i) for i in ErrorList]


ui = input("To continue? Y(y)/N: ")
if ui.capitalize() != 'Y':
    sys.exit(-1)

[mkdir(i) for i in MkdirList ]
[rename(i[0], i[1]) for i in MoveList ]
0 голосов
/ 10 февраля 2020

Adobe Bridge не может автоматически составлять последовательности, но его можно использовать для создания стеков, а затем выполнять операции с этими стеками. Я предполагаю (не проверено), что это включает в себя перемещение их в новые каталоги.

Adobe Bridge бесплатен и намного быстрее r, чем Lightroom при просмотре миниатюр. Вам не нужно импортировать изображения, он просто работает с файловой системой.

Это не решит вас r всего вопроса, так как я не думаю, что это будет делать укладку автоматически (это будет fo r Panorama o r HD R, но я не уверен, что HD R поймает вас r последовательностей серийной съемки).

Добро пожаловать на сайт Фотопедия, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...