You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Stable Diffusion WebUI API实现Inpaint功能?

使用Stable Diffusion WebUI API实现Inpaint的Python代码

前提准备

首先确保你的Stable Diffusion WebUI启动时开启了API支持,启动命令加上--api参数:

# Linux/macOS
./webui.sh --api

# Windows
webui.bat --api

完整Python实现代码

下面的代码会读取原图和蒙版图,通过API调用完成蒙版区域的填充:

import requests
import base64
from PIL import Image
from io import BytesIO

# 1. 配置文件路径和API地址
ORIGINAL_IMAGE_PATH = "path/to/your/original_image.png"
MASK_IMAGE_PATH = "path/to/your/mask_image.png"
API_URL = "http://localhost:7860/sdapi/v1/img2img"

# 2. 将图片转换为base64编码
def image_to_base64(image_path):
    with Image.open(image_path) as img:
        buffer = BytesIO()
        img.save(buffer, format="PNG")
        return base64.b64encode(buffer.getvalue()).decode("utf-8")

original_img_b64 = image_to_base64(ORIGINAL_IMAGE_PATH)
mask_img_b64 = image_to_base64(MASK_IMAGE_PATH)

# 3. 构造API请求参数
payload = {
    "prompt": "一只可爱的橘猫,毛发柔软,高清细节",  # 替换成你的提示词
    "negative_prompt": "模糊,低分辨率,畸形",  # 可选:负面提示词
    "init_images": [original_img_b64],
    "mask_image": mask_img_b64,
    "inpainting_fill": 0,  # 0=填充蒙版区域,1=原图保留,2=局部重绘
    "mask_blur": 4,  # 蒙版边缘模糊度,避免生硬边界
    "steps": 20,  # 生成步数
    "cfg_scale": 7,  # 提示词相关性
    "width": 512,  # 图片宽度(需和原图一致)
    "height": 512,  # 图片高度(需和原图一致)
    "sampler_name": "Euler a",  # 采样器
    "override_settings": {
        "sd_model_checkpoint": "your_model_name.safetensors"  # 可选:指定模型
    }
}

# 4. 发送请求并处理结果
response = requests.post(url=API_URL, json=payload)
response_data = response.json()

# 保存生成的图片
if "images" in response_data:
    generated_image_b64 = response_data["images"][0]
    image_data = base64.b64decode(generated_image_b64)
    with open("inpaint_result.png", "wb") as f:
        f.write(image_data)
    print("Inpaint完成,结果已保存为inpaint_result.png")
else:
    print(f"请求失败:{response_data.get('error', '未知错误')}")

关键参数说明

  • inpainting_fill: 控制填充逻辑,0是直接用提示词填充蒙版区域;1是保留原图内容,只对蒙版外区域做风格化;2是局部重绘(类似WebUI的"局部重绘"模式)
  • mask_blur: 给蒙版边缘加模糊,让生成内容和原图过渡更自然,数值建议2-8
  • width/height: 必须和原图尺寸一致,否则API会返回错误
  • sampler_name: 可选的采样器,比如Euler a、DDIM、DPM++ 2M Karras等,根据需求选择

注意事项

  • 原图和蒙版图的尺寸必须完全相同
  • 蒙版图建议用黑白图:白色区域是要填充的部分,黑色区域是保留的原图部分
  • 如果WebUI不在本地运行,把API_URL改成对应服务器的地址和端口

内容的提问来源于stack exchange,提问作者user38928392

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 09:02:33