A Node.js client for using Automatic1111's Stable Diffusion Web UI.
This project is a work in progress. Current features include:
- txt2img generation
- img2img generation
- pngInfo support
- ControlNet support both txt2img and img2img
- Node.js >= 18
- Automatic1111's Stable Diffusion Web UI
- ControlNet support requires sd-webui-controlnet
In order to use the API, you first need to enable it. You can do so by appending
--api to the command line arguments when running the webui.
For Linux: [webui-folder]/webui-user.sh
export COMMANDLINE_ARGS="--api"For Windows: [webui-folder]/webui-user.bat
setCOMMANDLINE_ARGS=--apiAdd node-sd-webui to your project.
Using npm:
npm i -S node-sd-webuiUsing yarn:
yarn add node-sd-webuiUsing pnpm:
pnpm add node-sd-webuiThe txt2img function allows you to generate an image using the txt2img
functionality of the Stable Diffusion WebUI.
Basic Example:
importsdwebuifrom'node-sd-webui'import{writeFileSync}from'fs'sdwebui().txt2img({prompt: 'A photo of a mushroom',}).then(({ images })=>writeFileSync('path/to/image.png',images[0],'base64')).catch((err)=>console.error(err))Another example with a few more options:
importsdwebui,{SamplingMethod}from'node-sd-webui'import{writeFileSync}from'fs'constclient=sdwebui()try{const{ images }=awaitclient.txt2img({prompt: 'A photo of a mushroom, red cap, white spots',negativePrompt: 'blurry, cartoon, drawing, illustration',samplingMethod: SamplingMethod.Euler_A,width: 768,height: 512,steps: 20,batchSize: 5,})images.forEach((image,i)=>writeFileSync(`path/to/image-${i}.png`,images[i],'base64'))}catch(err){console.error(err)}