2个版本
0.0.6 | 2023年12月3日 |
---|---|
0.0.5 | 2023年10月6日 |
#6 in #lora
18KB
355 行
sdwebuiapi
AUTOMATIC1111/stable-diffusion-webui的openapi交互的Rust库。
支持txt2img API调用,具有controlnet 2.0和lora支持。
API调用参数基于https://127.0.0.1:7860/docs的文档,并在webui 1.5上进行了成功测试。
安装
cargo add sdwebuiapi
用法
webuiapi_demo.ipynb包含带有原始图像的示例代码。此文档中的图像以jpeg格式压缩。
创建API客户端
let api_auth = Some(sdwebuiapi::OpenApiV1Auth {
username: "username set in webui's --api-auth arg",
password: "password set in webui's --api-auth arg",
});
// or `let api_auth = None` if webui is not protected by api_auth
let client = sdwebuiapi::Client::new("https://127.0.0.1:7860", api_auth);
txt2img
let mut payload = sdwebuiapi::TextToImagePayload {
prompt: "a cyberpunk cat".to_owned(),
..Default::default()
};
payload.set_base_model("v1-5-pruned-emaonly.safetensors [6ce0161689]");
let response: sdwebuiapi::TextToImageResponse = client.txt2img(payload).await;
// the generated image is in base64 format
let raw_b64_str: &str = &response.images[0];
带有controlnet和lora的txt2img
将图像编码为base64,controlnet接受无头的raw base64 png图像字符串
let input_image = std::fs::read("input-image.png").unwrap();
let raw_b64_str = data_encoding::BASE64.encode(&input_image);
构建txt2img参数
let controlnet_payload = sdwebuiapi::ControlnetPayload {
input_image: raw_b64_str.clone(),
model: "control_v11p_sd15_canny [d14c016b]".to_owned(),
module: "canny".to_owned(),
..Default::default()
};
let lora_paylod = sdwebuiapi::LoraPayload {
name: "add_detail".to_owned(),
weight: 1.0
};
let mut payload = sdwebuiapi::TextToImagePayload {
prompt: "a cyberpunk cat".to_owned(),
..Default::default()
};
payload
.set_base_model("v1-5-pruned-emaonly.safetensors [6ce0161689]")
.add_loras(&vec![lora_paylod])
.add_controlnet_units(&vec![controlnet_payload]);
生成图像
let response = client.txt2img(payload).await;
依赖项
~5–20MB
~271K SLoC