niche-image / app.py
minh132's picture
update
0274694
import gradio as gr
import requests
from PIL import Image
import io
import base64
def base64_to_pil_image(base64_image: str) -> Image.Image:
image_stream = io.BytesIO(base64.b64decode(base64_image))
image = Image.open(image_stream)
return image
def generate_image(
prompt,
key,
model_name,
specify_uid,
seed,
width,
height,
# num_inference_steps,
# guidance_scale,
):
data = {
"key": key,
"model_name": model_name,
"prompt": prompt,
"miner_uid": specify_uid,
"seed": seed,
"pipeline_params": {
"width": width,
"height": height,
# "num_inference_steps": num_inference_steps,
# "guidance_scale": guidance_scale,
},
}
response = requests.post(
"http://proxy_client_nicheimage.nichetensor.com:10003/generate",
json=data,
timeout=60,
)
base64_image = response.json()
print(len(base64_image))
image = base64_to_pil_image(base64_image)
return image
iface = gr.Interface(
fn=generate_image,
inputs=[
gr.Textbox(label="Prompt", value=""),
gr.Textbox(label="API Key", value=""),
gr.Dropdown(
choices=["RealisticVision", "SDXLTurbo", "AnimeV3"], value="SDXLTurbo"
),
gr.Number(label="Specify Miner UID", value=-1),
gr.Number(label="Seed", value=0),
gr.Slider(label="Width", minimum=0, maximum=2048, value=512, step=16),
gr.Slider(label="Height", minimum=0, maximum=2048, value=512, step=16),
# gr.Slider(label="Inference Steps", minimum=0, maximum=50, value=30, step=1),
# gr.Slider(
# label="Guidance Scale",
# minimum=0,
# maximum=1,
# value=7,
# step=0.1,
# ),
],
outputs="image",
title="Image Generation from Text Prompt",
description="Enter a prompt to generate an image.",
)
iface.queue().launch(share=False)