mixed a/v timelines

This commit is contained in:
j 2017-06-01 17:06:22 +02:00
parent 5d668d4595
commit 4057122d8b

View file

@ -88,13 +88,14 @@ def join_tiles(source_paths, durations, target_path):
#print(image_file) #print(image_file)
if mode == full_tile_mode: if mode == full_tile_mode:
# render full tile # render full tile
if data['full_tile_widths'][0]: if data['full_tile_widths']:
resized = data['target_images']['large'].resize(( if data['full_tile_widths'][0]:
data['full_tile_widths'][0], large_tile_h resized = data['target_images']['large'].resize((
), Image.ANTIALIAS) data['full_tile_widths'][0], large_tile_h
data['target_images']['full'].paste(resized, (data['full_tile_offset'], 0)) ), Image.ANTIALIAS)
data['full_tile_offset'] += data['full_tile_widths'][0] data['target_images']['full'].paste(resized, (data['full_tile_offset'], 0))
data['full_tile_widths'] = data['full_tile_widths'][1:] data['full_tile_offset'] += data['full_tile_widths'][0]
data['full_tile_widths'] = data['full_tile_widths'][1:]
large_tile_i += 1 large_tile_i += 1
# open next large tile # open next large tile
if large_tile_i < large_tile_n: if large_tile_i < large_tile_n:
@ -114,6 +115,7 @@ def join_tiles(source_paths, durations, target_path):
# read files # read files
frame_n = 0 frame_n = 0
offset = 0 offset = 0
offsets = set()
for i, path in enumerate(source_paths): for i, path in enumerate(source_paths):
file_info = map(get_file_info, os.listdir(path)) file_info = map(get_file_info, os.listdir(path))
file_info = list(filter(lambda x: x is not None, file_info)) file_info = list(filter(lambda x: x is not None, file_info))
@ -127,8 +129,13 @@ def join_tiles(source_paths, durations, target_path):
offset = int(sum(durations[:i]) * 25) offset = int(sum(durations[:i]) * 25)
for mode in files: for mode in files:
source_files[mode][offset] = files[mode] source_files[mode][offset] = files[mode]
offsets.add(offset)
modes = [m for m in modes if source_files[m]] modes = [m for m in modes if source_files[m]]
offsets = sorted(source_files[modes[0]]) for offset in sorted(offsets):
for mode in modes:
if offset not in source_files[mode]:
source_files[mode][offset] = []
last_offset = max(offsets) last_offset = max(offsets)
frame_n = last_offset frame_n = last_offset
for f in source_files[modes[0]][last_offset]: for f in source_files[modes[0]][last_offset]:
@ -176,6 +183,8 @@ def join_tiles(source_paths, durations, target_path):
save_and_open(data) save_and_open(data)
target_x -= large_tile_w target_x -= large_tile_w
data['target_images']['large'].paste(source_image, (target_x, 0)) data['target_images']['large'].paste(source_image, (target_x, 0))
if not source_files[mode][offset]:
save_and_open(data)
# save_and_open saves previous tile and opens tile at target_w # save_and_open saves previous tile and opens tile at target_w
# increase target_w to be in next tile # increase target_w to be in next tile
target_w += large_tile_w target_w += large_tile_w
@ -202,7 +211,6 @@ def join_tiles(source_paths, durations, target_path):
with open(p, 'r') as f: with open(p, 'r') as f:
path_cuts = json.load(f) path_cuts = json.load(f)
else: else:
print(p, 'missing')
path_cuts = [] path_cuts = []
if i > 0: if i > 0:
cuts.append(offset) cuts.append(offset)
@ -222,7 +230,6 @@ def split_tiles(path, paths, durations):
tiles = {} tiles = {}
for file_name in file_names: for file_name in file_names:
mode = re.split('\d+', file_name[8:])[0] mode = re.split('\d+', file_name[8:])[0]
print(file_name, mode)
split = re.split('[a-z]+', file_name[8 + len(mode):-4]) split = re.split('[a-z]+', file_name[8 + len(mode):-4])
height, index = map(lambda x: int(x) if len(x) else -1, split) height, index = map(lambda x: int(x) if len(x) else -1, split)
if mode not in tiles: if mode not in tiles:
@ -231,7 +238,6 @@ def split_tiles(path, paths, durations):
tiles[mode][height] = 0 tiles[mode][height] = 0
if index + 1 > tiles[mode][height]: if index + 1 > tiles[mode][height]:
tiles[mode][height] = index + 1 tiles[mode][height] = index + 1
print(tiles)
# for each mode # for each mode
for mode in tiles: for mode in tiles:
@ -279,5 +285,4 @@ def split_tiles(path, paths, durations):
paths[target_data[i]['item']], mode, height, target_data[i]['tile'] paths[target_data[i]['item']], mode, height, target_data[i]['tile']
) )
# target_image.save(file_name) # target_image.save(file_name)
print(file_name, target_image.size)