image-pluser-webui/processing/bulk.py
2023-04-17 20:20:27 +03:00

51 lines
1.7 KiB
Python

import ffmpeg
import os
from processing.utils import generate_name, get_date_text, generate_name_with_file_name
from methods.bulk_methods import edge, sharpen, canny_edge
def images_to_video(
directory, fps, img_ext, img_name_format, video_name, video_ext, video_dir
):
images_pattern = os.path.join(directory, f"{img_name_format}.{img_ext}")
if video_dir:
video_path = os.path.join(video_dir, f"{video_name}.{video_ext}")
else:
video_path = generate_name(
extension=video_ext, name=video_name, subfolder="videos"
)
ffmpeg.input(images_pattern, framerate=fps).output(
video_path, pix_fmt="yuv420p"
).global_args("-y").run()
def video_to_images(video_path, img_ext):
images_pattern = generate_name(
extension=img_ext, name=f"%d", subfolder=os.path.join("images", get_date_text())
)
ffmpeg.input(video_path).output(images_pattern).run()
def bulk_processing(directory, out_directory, method):
date = get_date_text()
if method == "Edge detection":
run_bulk(edge, directory, out_directory, date)
elif method == "Canny edge detection":
run_bulk(canny_edge, directory, out_directory, date)
elif method == "Sharpen":
run_bulk(sharpen, directory, out_directory, date)
def run_bulk(func, directory, out_directory, date):
for file in os.listdir(directory):
img = func(os.path.join(directory, file))
if out_directory:
img_out_path = os.path.join(out_directory, file)
else:
img_out_path = generate_name_with_file_name(
name=file, subfolder=os.path.join("images", date)
)
img.save(img_out_path)