From 7d6d5f67433c1c044278d222fd428adb06130ef2 Mon Sep 17 00:00:00 2001 From: Charles Fettinger Date: Mon, 8 May 2023 03:01:35 -0700 Subject: [PATCH] Simplify Future rebase --- iz_helpers/helpers.py | 6 +-- iz_helpers/sd_helpers.py | 1 - iz_helpers/static_variables.py | 3 +- iz_helpers/ui.py | 70 +++------------------------------- iz_helpers/video.py | 41 +++++++++++++++++++- scripts/infinite-zoom.py | 2 +- 6 files changed, 50 insertions(+), 73 deletions(-) diff --git a/iz_helpers/helpers.py b/iz_helpers/helpers.py index 42da235..28afc51 100644 --- a/iz_helpers/helpers.py +++ b/iz_helpers/helpers.py @@ -117,9 +117,9 @@ def putPrompts(files): print( "[InfiniteZoom:] Loading your prompt failed. It seems to be invalid. Your prompt table is preserved." ) - asyncio.run( - showGradioErrorAsync("Loading your prompts failed. It seems to be invalid. Your prompt table has been preserved.",5) - ) + # error only be shown with raise, so ui gets broken. + #asyncio.run(showGradioErrorAsync("Loading your prompts failed. It seems to be invalid. Your prompt table has been preserved.",5)) + return [gr.Textbox.update(), gr.DataFrame.update(), gr.Textbox.update(),gr.Textbox.update()] diff --git a/iz_helpers/sd_helpers.py b/iz_helpers/sd_helpers.py index 4e43fc9..3210c78 100644 --- a/iz_helpers/sd_helpers.py +++ b/iz_helpers/sd_helpers.py @@ -2,7 +2,6 @@ from modules.processing import ( process_images, StableDiffusionProcessingTxt2Img, StableDiffusionProcessingImg2Img, - Processed ) import modules.shared as shared diff --git a/iz_helpers/static_variables.py b/iz_helpers/static_variables.py index 9d36046..3f6a100 100644 --- a/iz_helpers/static_variables.py +++ b/iz_helpers/static_variables.py @@ -6,6 +6,7 @@ default_sampling_steps = 35 default_sampler = "DDIM" default_cfg_scale = 8 default_mask_blur = 60 +default_overmask = 8 default_total_outpaints = 5 promptTableHeaders = ["Outpaint Steps", "Prompt", "image location", "blend mask", "is keyframe"], ["number", "str", "str", "str", "bool"] @@ -21,7 +22,7 @@ default_prompt = """ [4, "a Verdant canopy","","",false] ] }, - "postPrompt": "style by Alex Horley Wenjun Lin greg rutkowski Ruan Jia (Wayne Barlowe:1.2), ", + "postPrompt": "epic perspective,(vegetation overgrowth:1.3)(intricate, ornamentation:1.1),(baroque:1.1), fantasy, (realistic:1) digital painting , (magical,mystical:1.2) , (wide angle shot:1.4), (landscape composed:1.2)(medieval:1.1),(tropical forest:1.4),(river:1.3) volumetric lighting ,epic, style by Alex Horley Wenjun Lin greg rutkowski Ruan Jia (Wayne Barlowe:1.2)", "negPrompt": "frames, border, edges, borderline, text, character, duplicate, error, out of frame, watermark, low quality, ugly, deformed, blur, bad-artist" } """ diff --git a/iz_helpers/ui.py b/iz_helpers/ui.py index 3a6ce9f..e3e03e2 100644 --- a/iz_helpers/ui.py +++ b/iz_helpers/ui.py @@ -187,6 +187,7 @@ def on_ui_tabs(): value=30, minimum=1, maximum=60, + step=1 ) video_zoom_mode = gr.Radio( label="Zoom mode", @@ -200,6 +201,7 @@ def on_ui_tabs(): value=0, minimum=1, maximum=60, + step=1 ) video_last_frame_dupe_amount = gr.Slider( label="number of last frame dupe", @@ -207,6 +209,7 @@ def on_ui_tabs(): value=0, minimum=1, maximum=60, + step=1 ) video_zoom_speed = gr.Slider( label="Zoom Speed", @@ -223,6 +226,7 @@ def on_ui_tabs(): minimum=0, maximum=64, value=default_mask_blur, + step=1 ) inpainting_fill_mode = gr.Radio( label="Masked content", @@ -305,72 +309,8 @@ Our best experience and trade-off is the R-ERSGAn4x upscaler. return [(infinite_zoom_interface, "Infinite Zoom", "iz_interface")] - -def check_create_zoom( - main_common_prompt_pre, - main_prompts, - main_common_prompt_suf, - main_negative_prompt, - main_outpaint_steps, - main_guidance_scale, - sampling_step, - init_image, - exit_image, - video_frame_rate, - video_zoom_mode, - video_start_frame_dupe_amount, - video_last_frame_dupe_amount, - inpainting_denoising_strength, - inpainting_mask_blur, - inpainting_fill_mode, - inpainting_full_res, - inpainting_padding, - video_zoom_speed, - seed, - main_width, - main_height, - batchcount_slider, - main_sampler, - upscale_do, - upscaler_name, - upscale_by, -): - keys = main_prompts.keys() - if 0 not in keys: - raise gr.Error("Ensure your prompt table has a step 9 (zero) prompt") - - return create_zoom( - main_common_prompt_pre, - main_prompts, - main_common_prompt_suf, - main_negative_prompt, - main_outpaint_steps, - main_guidance_scale, - sampling_step, - init_image, - exit_image, - video_frame_rate, - video_zoom_mode, - video_start_frame_dupe_amount, - video_last_frame_dupe_amount, - inpainting_denoising_strength, - inpainting_mask_blur, - inpainting_fill_mode, - inpainting_full_res, - inpainting_padding, - video_zoom_speed, - seed, - main_width, - main_height, - batchcount_slider, - main_sampler, - upscale_do, - upscaler_name, - upscale_by, - ) - def checkPrompts(p): return gr.Button.update( interactive=any(0 in sublist for sublist in p) or any("0" in sublist for sublist in p) - ) + ) \ No newline at end of file diff --git a/iz_helpers/video.py b/iz_helpers/video.py index 64de8d9..8f175ea 100644 --- a/iz_helpers/video.py +++ b/iz_helpers/video.py @@ -55,9 +55,46 @@ def write_video(file_path, frames, fps, reversed=True, start_frame_dupe_amount=1 writer.append_data(np_frame) # Write the duplicated frames to the video writer - for frame in end_frames: + for frame in end_frames: np_frame = np.array(frame) writer.append_data(np_frame) # Close the video writer - writer.close() \ No newline at end of file + writer.close() + + + class ContinuousVideoWriter: + + _writer = None + + def __init__(self, file_path, initframe, fps, start_frame_dupe_amount=15): + """ + Writes initial frame to a new mp4 video file + :param file_path: Path to output video, must end with .mp4 + :param frame: Start image PIL.Image objects + :param fps: Desired frame rate + :param reversed: if order of images to be reversed (default = True) + """ + + writer = imageio.get_writer(file_path, fps=fps, macro_block_size=None) + start_frames = [initframe] * start_frame_dupe_amount + for f in start_frames: + writer.append_data(np.array(f)) + self._writer = writer + + def append(self, frames): + """ + Append a list of image PIL.Image objects to the end of the file. + :param frames: List of image PIL.Image objects + """ + for i,f in enumerate(frames): + self._writer.append_data(np.array(f)) + + def finish(self, frame, last_frame_dupe_amount=30 ): + """ + Closes the file writer. + """ + for i in range(last_frame_dupe_amount): + self._writer.append_data(np.array(frame)) + + self._writer.close() \ No newline at end of file diff --git a/scripts/infinite-zoom.py b/scripts/infinite-zoom.py index ab2764d..60751b0 100644 --- a/scripts/infinite-zoom.py +++ b/scripts/infinite-zoom.py @@ -2,4 +2,4 @@ from modules import script_callbacks from iz_helpers.ui import on_ui_tabs from iz_helpers.settings import on_ui_settings script_callbacks.on_ui_tabs(on_ui_tabs) -script_callbacks.on_ui_settings(on_ui_settings) +script_callbacks.on_ui_settings(on_ui_settings) \ No newline at end of file