-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
35 lines (32 loc) · 1.83 KB
/
Copy pathmain.py
File metadata and controls
35 lines (32 loc) · 1.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
"""
Author: 未来可欺 2513502304@qq.com
Date: 2025-03-22 12:31:06
LastEditors: 未来可欺 2513502304@qq.com
LastEditTime: 2025-04-03 12:59:43
Description: 应用于视频或图像的蒙太奇生成工具
"""
from montage import Montage, safe_imread, safe_imwrite
import settings
import joblib
import os
def main():
if os.path.exists(settings.pkl_path):
montage: Montage = joblib.load(settings.pkl_path)
different = montage.image_dir != settings.image_dir or montage.block_height != settings.block_height or montage.block_width != settings.block_width or montage.fix_ratio != settings.fix_ratio or montage.lazy_load != settings.lazy_load
if different:
montage: Montage = Montage(image_dir=settings.image_dir, block_height=settings.block_height, block_width=settings.block_width, fix_ratio=settings.fix_ratio, lazy_load=settings.lazy_load)
joblib.dump(montage, settings.pkl_path)
else:
montage: Montage = Montage(image_dir=settings.image_dir, block_height=settings.block_height, block_width=settings.block_width, fix_ratio=settings.fix_ratio, lazy_load=settings.lazy_load)
joblib.dump(montage, settings.pkl_path)
match settings.mode.lower():
case 'image':
image = safe_imread(settings.image_input_path)
montage_image = montage.generate_image(image=image, scale=settings.scale, fit_size=settings.fit_size, unique=settings.unique)
safe_imwrite(settings.image_output_path, montage_image)
case 'video':
montage.generate_video(video_input_path=settings.video_input_path, video_output_path=settings.video_output_path, scale=settings.scale, fit_size=settings.fit_size, unique=settings.unique)
case _:
raise NotImplementedError()
if __name__ == '__main__':
main()