使用stable diffusion和ControlNet扩图·
时间: 2025-05-13 16:09:10 浏览: 22
### 使用 Stable Diffusion 和 ControlNet 进行图像扩展
为了利用 Stable Diffusion 和 ControlNet 实现高质量的图像扩展,以下是详细的说明:
#### 准备工作
确保已经按照官方指南完成以下操作:
- 安装 `sd-webui-controlnet` 插件[^1]。
- 下载所需的 ControlNet 模型,并将其放置于 `/models/ControlNet` 文件夹下[^2]。
插件安装完成后,在 WebUI 中可以找到对应的选项卡用于配置和运行扩图功能。
---
#### 控制模式设置
在使用 ControlNet 的过程中,需注意以下几个关键参数:
- **控制模式选择**:推荐优先选用 `ControlNet` 作为主要控制器[^3]。
- **画面缩放模式**:通常建议选择“缩放并填充”,以便更好地适配新尺寸下的内容生成需求。
这些基础设定能够帮助保持原图风格的一致性和连贯性。
---
#### 输入目标尺寸
当准备调整原始图片大小时,
- 可手动指定期望的高度与宽度数值;
- 或者借助界面工具——点击待处理素材右下角特定图标(即最右侧的那个),自动提取当前选中图形的实际分辨率数据填入对应字段内。
此步至关重要,因为它决定了最终输出作品的整体布局比例以及细节呈现效果。
---
#### 提示词优化技巧
为了让生成结果更加贴近预期设想,在提交渲染请求之前务必精心设计 Prompt 文本字符串。特别是涉及复杂场景或者特殊环境描述的时候,应该尽可能详尽地补充关于背景要素的相关线索。例如,“黄昏时刻站在海边沙滩上的孤独人物剪影”。
---
#### 开始执行任务
一切准备工作就绪之后就可以按下启动键等待计算结束返回成品啦!
下面是 Python 脚本形式展示如何调用 API 接口来自动化上述流程的一个简单例子:
```python
import requests
from PIL import Image
from io import BytesIO
def expand_image_with_controlnet(image_path, prompt, width=768, height=512):
url = 'http://localhost:7860/sdapi/v1/txt2img' # 假设本地服务端口号为7860
with open(image_path, "rb") as image_file:
base64image = base64.b64encode(image_file.read()).decode('utf-8')
payload = {
"init_images": [base64image],
"prompt": prompt,
"width": width,
"height": height,
"controlnet_units": [{
"enabled": True,
"module": "canny",
"model": "control_canny-fp16",
}]
}
response = requests.post(url, json=payload)
r = response.json()
for i in r['images']:
image = Image.open(BytesIO(base64.b64decode(i.split(",",1)[0])))
return image
expanded_img = expand_image_with_controlnet('./input.jpg', 'A beautiful landscape under sunset')
expanded_img.save("./output_expanded.png")
```
> 注意:以上代码仅为示意用途,请依据实际部署情况修改相应路径和服务地址等信息。
---
阅读全文
相关推荐

















