K00B404's picture
Create app.py
74eeb71 verified
raw
history blame contribute delete
2.73 kB
import gradio as gr
import numpy as np
from PIL import Image
from io import BytesIO
import requests
import json
# List of available models
models = [
"HHM29/finetuning_dream_fin",
"KappaNeuro/needlepoint",
"Norod78/ClaymationX_LoRA",
"KappaNeuro/movie-poster",
"digiplay/MixTape_RocknRoll_v3punk_bake_fp16",
"digiplay/BeautifulFantasyRealMix_diffusers",
"Yntec/pineappleAnimeMix",
"Yntec/DucHaiten-Retro-Diffusers",
"joachimsallstrom/aether-pixel-lora-for-sdxl",
"runwayml/stable-diffusion-v1-5",
"stabilityai/stable-diffusion-xl-base-1.0",
"CompVis/stable-diffusion-v1-4",
]
def generate_image(model_name, image, prompt, length, temperature, n_samples, use_image2image=False):
data = {
"image_prompt": image,
"prompt": prompt,
"length": length,
"temperature": temperature,
"n_samples": n_samples,
"model": model_name,
}
if use_image2image:
data["use_image2image"] = True
data["image2image_prompt"] = image # Provide the target image for image2image
response = requests.post("https://api.stable-diffusion.ml/generate", json=data)
response_json = response.json()
if response.status_code == 200:
results = response_json["generated_images"]
generated_image = np.frombuffer(BytesIO(results[0]["image"]).read(), dtype=np.uint8)
generated_image = generated_image.reshape(results[0]["metadata"]["height"], results[0]["metadata"]["width"], 3)
return Image.fromarray(generated_image)
else:
return None
def app(model=gr.inputs.Selector(options=models),
image=gr.inputs.Image(shape=(None, None)),
prompt=gr.inputs.Textbox(default="an image generated with"),
length=gr.inputs.Slider(1, 20, step=1, default=8),
temperature=gr.inputs.Slider(0.5, 1.5, step=0.1, default=1),
n_samples=gr.inputs.Slider(1, 5, step=1, default=1),
use_image2image=gr.inputs.Boolean(default=False)):
generated_image = generate_image(model,
image=image.data if image else None,
prompt=prompt,
length=int(length),
temperature=float(temperature),
n_samples=int(n_samples),
use_image2image=use_image2image)
return gr.outputs.Image(as_pil=True)(generated_image) if generated_image else None
if __name__ == "__main__":
title = "Image Generation App"
description = "Select a model and customize your image generation or image2image settings!"
gradio.launch(app, port=8000, title=title, description=description)