Spaces:
Runtime error
Runtime error
| from prodiapy import Custom | |
| from prodiapy.util import load | |
| from PIL import Image | |
| from threading import Thread | |
| from utils import image_to_base64 | |
| import gradio as gr | |
| import gradio_user_history as gr_user_history | |
| import os | |
| pipe = Custom(os.getenv("PRODIA_API_KEY")) | |
| def txt2img(prompt, negative_prompt, model, steps, sampler, cfg_scale, width, height, seed, batch_count, profile: gr.OAuthProfile | None): | |
| total_images = [] | |
| threads = [] | |
| def generate_one_image(): | |
| result = pipe.create( | |
| "/sd/generate", | |
| prompt=prompt, | |
| negative_prompt=negative_prompt, | |
| model=model, | |
| steps=steps, | |
| cfg_scale=cfg_scale, | |
| sampler=sampler, | |
| width=width, | |
| height=height, | |
| seed=seed | |
| ) | |
| job = pipe.wait_for(result) | |
| total_images.append(job['imageUrl']) | |
| for x in range(batch_count): | |
| t = Thread(target=generate_one_image) | |
| threads.append(t) | |
| t.start() | |
| for t in threads: | |
| t.join() | |
| for image in total_images: | |
| gr_user_history.save_image(label=prompt, image=Image.open(load(image)), profile=profile) | |
| return gr.update(value=total_images, preview=False) | |
| def img2img(input_image, denoising, prompt, negative_prompt, model, steps, sampler, cfg_scale, width, height, seed, | |
| batch_count): | |
| if input_image is None: | |
| return | |
| total_images = [] | |
| threads = [] | |
| def generate_one_image(): | |
| result = pipe.create( | |
| "/sd/transform", | |
| imageData=image_to_base64(input_image), | |
| denoising_strength=denoising, | |
| prompt=prompt, | |
| negative_prompt=negative_prompt, | |
| model=model, | |
| steps=steps, | |
| cfg_scale=cfg_scale, | |
| sampler=sampler, | |
| width=width, | |
| height=height, | |
| seed=seed | |
| ) | |
| job = pipe.wait_for(result) | |
| total_images.append(job['imageUrl']) | |
| for x in range(batch_count): | |
| t = Thread(target=generate_one_image) | |
| threads.append(t) | |
| t.start() | |
| for t in threads: | |
| t.join() | |
| return gr.update(value=total_images, preview=False) | |
| def upscale(image, scale, profile: gr.OAuthProfile | None): | |
| if image is None: | |
| return | |
| job = pipe.create( | |
| '/upscale', | |
| imageData=image_to_base64(image), | |
| resize=scale | |
| ) | |
| image = pipe.wait_for(job)['imageUrl'] | |
| gr_user_history.save_image(label=f'upscale by {scale}', image=Image.open(load(image)), profile=profile) | |
| return image | |