|
import gradio as gr |
|
import numpy as np |
|
import time |
|
import os |
|
from PIL import Image |
|
import requests |
|
from io import BytesIO |
|
|
|
|
|
def create_gif(images): |
|
pil_images = [] |
|
for image in images: |
|
if isinstance(image, str): |
|
response = requests.get(image) |
|
image = Image.open(BytesIO(response.content)) |
|
else: |
|
image = Image.fromarray((image * 255).astype(np.uint8)) |
|
pil_images.append(image) |
|
fp_out = os.path.join(os.path.dirname(__file__), "image.gif") |
|
img = pil_images.pop(0) |
|
img.save(fp=fp_out, format='GIF', append_images=pil_images, |
|
save_all=True, duration=400, loop=0) |
|
return fp_out |
|
|
|
|
|
def fake_diffusion(steps): |
|
rng = np.random.default_rng() |
|
images = [] |
|
for _ in range(steps): |
|
time.sleep(1) |
|
image = rng.random((600, 600, 3)) |
|
images.append(image) |
|
yield image, gr.Image(visible=False) |
|
|
|
time.sleep(1) |
|
image = "https://gradio-builds.s3.amazonaws.com/diffusion_image/cute_dog.jpg" |
|
images.append(image) |
|
gif_path = create_gif(images) |
|
|
|
yield image, gr.Image(value=gif_path, visible=True) |
|
|
|
|
|
demo = gr.Interface(fake_diffusion, |
|
inputs=gr.Slider(1, 10, 3, step=1), |
|
outputs=["image", gr.Image(label="All Images", visible=False)]) |
|
demo.queue() |
|
|
|
if __name__ == "__main__": |
|
demo.launch() |
|
|