test / cli /simple-txt2img.js
bilegentile's picture
Upload folder using huggingface_hub
c19ca42 verified
#!/usr/bin/env node
// simple nodejs script to test sdnext api
const fs = require('fs'); // eslint-disable-line no-undef
const process = require('process'); // eslint-disable-line no-undef
const sd_url = process.env.SDAPI_URL || 'http://127.0.0.1:7860';
const sd_username = process.env.SDAPI_USR;
const sd_password = process.env.SDAPI_PWD;
const sd_options = {
// first pass
prompt: 'city at night',
negative_prompt: 'foggy, blurry',
sampler_name: 'UniPC',
seed: -1,
steps: 20,
batch_size: 1,
n_iter: 1,
cfg_scale: 6,
width: 512,
height: 512,
// enable second pass
enable_hr: true,
// second pass: upscale
hr_upscaler: 'SCUNet GAN',
hr_scale: 2.0,
// second pass: hires
hr_force: true,
hr_second_pass_steps: 20,
hr_sampler_name: 'UniPC',
denoising_strength: 0.5,
// second pass: refiner
refiner_steps: 5,
refiner_start: 0.8,
refiner_prompt: '',
refiner_negative: '',
// api return options
save_images: false,
send_images: true,
};
async function main() {
const method = 'POST';
const headers = new Headers();
const body = JSON.stringify(sd_options);
headers.set('Content-Type', 'application/json');
if (sd_username && sd_password) headers.set({ Authorization: `Basic ${btoa('sd_username:sd_password')}` });
const res = await fetch(`${sd_url}/sdapi/v1/txt2img`, { method, headers, body });
if (res.status !== 200) {
console.log('Error', res.status);
} else {
const json = await res.json();
console.log('result:', json.info);
for (const i in json.images) { // eslint-disable-line guard-for-in
const f = `/tmp/test-{${i}.jpg`;
fs.writeFileSync(f, atob(json.images[i]), 'binary');
console.log('image saved:', f);
}
}
}
main();