Insert new frame at current index instead of last position
This commit is contained in:
parent
04dcaadfba
commit
cbbc945821
|
@ -800,15 +800,8 @@ def get_frames_list(folder:str):
|
|||
def get_frame_by_idx(folder:str, index:int):
|
||||
# Refresh file list
|
||||
existing_animation_files = get_frames_list(folder)
|
||||
# Get last file
|
||||
# Filename pattern is A.0001.JPG
|
||||
if index and index in range(len(existing_animation_files)):
|
||||
frm = cv2.imread(os.path.join(folder, existing_animation_files[index]))
|
||||
frm = cv2.resize(frm, (project_settings['screen_w'], project_settings['screen_h']))
|
||||
return frm
|
||||
else:
|
||||
return generate_text_image(_("Image not found."), project_settings['screen_w'], project_settings['screen_h'])
|
||||
|
||||
return existing_animation_files[index].split('.')
|
||||
|
||||
def get_last_frame(folder:str):
|
||||
# Refresh file list
|
||||
|
@ -826,8 +819,11 @@ def get_before_last_frame(folder:str):
|
|||
return existing_animation_files[-2]
|
||||
|
||||
|
||||
def get_onionskin_frame(folder:str):
|
||||
prev_image = get_last_frame(folder)
|
||||
def get_onionskin_frame(folder:str, index:int=-1):
|
||||
if index == -1:
|
||||
prev_image = get_last_frame(folder)
|
||||
else:
|
||||
prev_image = get_frame_by_idx(folder, index)
|
||||
prev_image = '.'.join(prev_image)
|
||||
if os.path.exists(os.path.expanduser(os.path.join(savepath, prev_image))):
|
||||
frm = cv2.imread(os.path.join(savepath, prev_image))
|
||||
|
@ -913,6 +909,18 @@ def batch_rename(folder:str):
|
|||
return get_frames_list(folder)
|
||||
|
||||
|
||||
def batch_rename_reversed(folder:str, from_index:int=0):
|
||||
# initialize counter to 0
|
||||
frame_list = get_frames_list(os.path.realpath(folder))
|
||||
print(frame_list[from_index:])
|
||||
counter = (".%04i." % x for x in count(len(frame_list), -1))
|
||||
for i in reversed(frame_list[from_index:]):
|
||||
if os.path.exists(os.path.join(folder, i)):
|
||||
cnt = next(counter)
|
||||
os.rename(os.path.join(folder, i), os.path.join(folder, "{}{}{}".format(project_letter, cnt, project_settings['file_extension'])))
|
||||
return get_frames_list(folder)
|
||||
|
||||
|
||||
def offset_dictvalues(from_index=0):
|
||||
dict_copy = dict(img_list)
|
||||
for i in range(from_index, len(dict_copy)):
|
||||
|
@ -945,6 +953,19 @@ def remove_frame(img_list:list, img_index:int):
|
|||
else:
|
||||
return img_list, 0, blank_image
|
||||
|
||||
def insert_frame(img_list:list, frame_name:str, img_index:int):
|
||||
if len(img_list) > img_index:
|
||||
folder_path = os.path.realpath(savepath)
|
||||
# ~ frame_name = img_list[img_index]
|
||||
frame_path = os.path.join(folder_path, frame_name)
|
||||
# ~ if not os.path.exists(frame_path):
|
||||
# ~ return img_list, img_index, blank_image
|
||||
print(_("Inserting {}").format(frame_path))
|
||||
# rename files and get new list
|
||||
img_list = batch_rename_reversed(folder_path, img_index+1)
|
||||
return img_list, img_index
|
||||
else:
|
||||
return img_list, 0
|
||||
|
||||
def testDevice(source):
|
||||
cap = cv2.VideoCapture(source)
|
||||
|
@ -1155,7 +1176,12 @@ def main(args):
|
|||
# SPACE or numpad 0 pressed
|
||||
elif (k%256 == 32) or (k%256 == 48) or (k%256 == 176):
|
||||
print(_("Capture frame"))
|
||||
img_name = return_next_frame_number(get_last_frame(savepath))
|
||||
# ~ img_name = return_next_frame_number(get_last_frame(savepath))
|
||||
img_name = return_next_frame_number(img_list[index].split('.'))
|
||||
if img_name in img_list:
|
||||
insert_frame(img_list, img_name, index)
|
||||
else:
|
||||
img_name = return_next_frame_number(get_last_frame(savepath))
|
||||
img_path = os.path.join(savepath, img_name)
|
||||
capture_ok = cam.capture_frame(img_path)
|
||||
if capture_ok:
|
||||
|
@ -1164,9 +1190,8 @@ def main(args):
|
|||
if len(img_list) and (img_list[index] == '{letter}.-001.{ext}'.format(letter=project_letter, ext=project_settings['file_extension'])):
|
||||
img_list[index] = img_name
|
||||
else:
|
||||
# Move to last frame
|
||||
index = len(img_list)
|
||||
cam.frame = get_onionskin_frame(savepath)
|
||||
index += 1
|
||||
cam.frame = get_onionskin_frame(savepath, index)
|
||||
cam.o_frame = cam.frame.copy()
|
||||
else:
|
||||
print(_("Error during capture. Try again."))
|
||||
|
|
Loading…
Reference in New Issue