| 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() |
|
|