Spaces:
Runtime error
Runtime error
| import json | |
| import os | |
| import time | |
| import random | |
| import gradio as gr | |
| import numpy as np | |
| import requests | |
| from PIL import Image | |
| print ("1") | |
| URL = "http://0.0.0.0:8188/prompt" | |
| INPUT_DIR = "input" | |
| OUTPUT_DIR = "output" | |
| cached_seed = 0 | |
| def get_latest_image(folder): | |
| files = os.listdir(folder) | |
| image_files = [f for f in files if f.lower().endswith(('.png', '.jpg', '.jpeg'))] | |
| image_files.sort(key=lambda x: os.path.getmtime(os.path.join(folder, x))) | |
| latest_image = os.path.join(folder, image_files[-1]) if image_files else None | |
| return latest_image | |
| print ("2") | |
| def start_queue(prompt_workflow): | |
| p = {"prompt": prompt_workflow} | |
| data = json.dumps(p).encode('utf-8') | |
| requests.post(URL, data=data) | |
| print ("3") | |
| def generate_image(input_image): | |
| with open("workflow.json", "r") as file_json: | |
| prompt = json.load(file_json) | |
| print ("4") | |
| prompt["3"]["inputs"]["seed"] = random.randint(1, 1500000) | |
| global cached_seed | |
| if cached_seed == prompt["3"]["inputs"]["seed"]: | |
| return get_latest_image(OUTPUT_DIR) | |
| cached_seed = prompt["3"]["inputs"]["seed"] | |
| print ("5") | |
| image = Image.fromarray(input_image) | |
| min_side = min(image.size) | |
| scale_factor = 512 / min_side | |
| new_size = (round(image.size[0] * scale_factor), round(image.size[1] * scale_factor)) | |
| resized_image = image.resize(new_size) | |
| print ("6") | |
| resized_image.save(os.path.join(INPUT_DIR, "test_api.jpg")) | |
| previous_image = get_latest_image(OUTPUT_DIR) | |
| start_queue(prompt) | |
| print ("7") | |
| while True: | |
| print ("8") | |
| latest_image = get_latest_image(OUTPUT_DIR) | |
| if latest_image != previous_image: | |
| return latest_image | |
| print ("9") | |
| time.sleep(1) | |
| demo = gr.Interface(fn=generate_image, inputs=["image"], outputs=["image"]) | |
| demo.launch(share=True) | |
| print ("10") | |