Spaces:
Runtime error
Runtime error
import gradio as gr | |
import requests | |
import base64 | |
from PIL import Image, ImageDraw | |
import io | |
import random | |
url = "http://73.255.78.150:7909/sdapi/v1/img2img" | |
session_seed, last_session_seed = None, None | |
def generate_image(prompt, steps, reset_seed, increment_seed, image_file=None): | |
global session_seed, last_session_seed | |
if reset_seed: | |
last_session_seed, session_seed = session_seed, -1 if session_seed != -1 else None | |
elif not reset_seed and last_session_seed is not None: | |
session_seed = last_session_seed | |
elif session_seed is None: | |
session_seed = random.randint(0, 10000) | |
if increment_seed and session_seed != -1: | |
session_seed += 1 | |
init_image_value = "" | |
if image_file: | |
image_data = image_file.read() | |
encoded_image = base64.b64encode(image_data).decode("utf-8") | |
init_image_value = "data:image/jpeg;base64," + encoded_image | |
payload = { | |
"init_image": init_image_value, | |
"prompt": prompt, | |
"steps": steps, | |
# ... rest of the predefined parameters ... | |
} | |
response = requests.post(url, json=payload) | |
response_data = response.json() | |
try: | |
image = Image.open(io.BytesIO(base64.b64decode(response_data['images'][0]))) | |
return image | |
except KeyError: | |
error_message = response_data.get('error', 'Unknown error') | |
error_image = Image.new('RGB', (512, 512), color=(73, 109, 137)) | |
d = ImageDraw.Draw(error_image) | |
d.text((10, 10), f"Error: {error_message}", fill=(255, 255, 0)) | |
return error_image | |
def main_interface(): | |
with gr.Blocks() as main_blocks: | |
with gr.Row(): | |
img_output = gr.Image(label="Generated Image") | |
with gr.Row(): | |
with gr.Column(): | |
prompt_input = gr.Textbox(lines=2, placeholder="Imagine something...", label="Prompt") | |
steps_input = gr.Slider(minimum=15, maximum=50, step=15, default=5, label="Steps") | |
image_input = gr.File(label="Upload Image") | |
with gr.Column(): | |
reset_seed_input = gr.Checkbox(label="Randomize Composition") | |
increment_seed_input = gr.Checkbox(label="New Composition") | |
iface = gr.Interface( | |
fn=generate_image, | |
inputs=[prompt_input, steps_input, reset_seed_input, increment_seed_input, image_input], | |
outputs=[img_output], | |
live=False, | |
layout=main_blocks | |
) | |
iface.launch() | |
if __name__ == "__main__": | |
main_interface() |