C#でStable Diffusion APIにアクセス
https://etgps.net/stable-diffusion-on-rx6400/ の続きです。
AUTOMATIC1111のAPIにC#でアクセスするための手順のまとめです。
- webui-user.batにAPIの引数 --api を追加する
set COMMANDLINE_ARGS= --no-half --precision full --skip-torch-cuda-test --medvram --opt-split-attention --opt-sub-quad-attention --api
- Visual Studio 2022でコンソールアプリケーションを作成
- Program.csに以下を記述
using System.Net.Http.Json;
string url = "http://127.0.0.1:7860";
var payload = new
{
prompt = "puppy dog",
steps = 5
};
using var client = new HttpClient();
var response = await client.PostAsJsonAsync($"{url}/sdapi/v1/txt2img", payload);
var r = await response.Content.ReadFromJsonAsync<Response>();
using var f = File.OpenWrite("output.png");
f.Write(Convert.FromBase64String(r.Images[0]));
- Reponse.csを作って以下を記述
public class Response
{
public List<string> Images { get; set; }
public Dictionary<string, object> Parameters { get; set; }
public string Info { get; set; }
}
- webui-user.batを実行
- 上記のC#を実行
以下が生成されます。
一連のソースコードは https://github.com/etgps/ManageStableDiffusion/ に置きました。