C#でStable Diffusion APIにアクセス

C#でStable Diffusion APIにアクセス

https://etgps.net/stable-diffusion-on-rx6400/ の続きです。

AUTOMATIC1111のAPIにC#でアクセスするための手順のまとめです。

  1. 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
  1. Visual Studio 2022でコンソールアプリケーションを作成
  2. 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]));
  1. Reponse.csを作って以下を記述
public class Response
{
    public List<string> Images { get; set; }
    public Dictionary<string, object> Parameters { get; set; }
    public string Info { get; set; }
}
  1. webui-user.batを実行
  2. 上記のC#を実行

以下が生成されます。

一連のソースコードは https://github.com/etgps/ManageStableDiffusion/ に置きました。