File size: 1,463 Bytes
3c5c3c1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import gradio as gr
from PIL import Image
from utils import outpaint_image
DEFAULT_MODEL_ID = "stabilityai/stable-diffusion-2-inpainting"
def generate(image, prompt, directions):
try:
yield gr.Textbox.update(value="正在生成扩图中,请稍候...", visible=True), None
result = outpaint_image(image, prompt, directions, DEFAULT_MODEL_ID)
yield gr.Textbox.update(visible=False), result
except Exception as e:
yield gr.Textbox.update(value=f"❌ 错误:{str(e)}", visible=True), None
with gr.Blocks(title="描述词扩图 App(手机专用)") as demo:
gr.Markdown("""# 🎨 描述词驱动图像扩图(适配手机)
上传图像 + 描述词,点击按钮即可生成,使用轻量模型 `stabilityai/stable-diffusion-2-inpainting`
""")
with gr.Row():
image_input = gr.Image(label="上传原图", type="pil")
prompt_input = gr.Textbox(label="请输入描述词 (prompt)")
directions_input = gr.CheckboxGroup(
choices=["上", "下", "左", "右"],
label="选择扩展方向(可多选)",
value=["上", "下", "左", "右"]
)
status_output = gr.Textbox(label="状态", visible=False)
image_output = gr.Image(label="扩图结果")
run_btn = gr.Button("开始生成")
run_btn.click(
fn=generate,
inputs=[image_input, prompt_input, directions_input],
outputs=[status_output, image_output]
)
demo.launch()
|