Auto-Photoshop-StableDiffus.../sdapi.js

216 lines
5.0 KiB
JavaScript

//javascript plugin can't read images from local directory so we send a request to local server to read the image file and send it back to plugin as image string base64
async function getInitImage (init_image_name) {
console.log('getInitImage(): get Init Image from the server :')
payload = {
init_image_name: init_image_name
}
const full_url = 'http://127.0.0.1:8000/getInitImage/'
console.log(full_url)
console.log('getInitImage payload:', payload)
let request = await fetch(full_url, {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
// "body": payload
})
let json = await request.json()
console.log('json:')
console.dir(json)
base64data = json.init_image_str
image_src = `data:image/png;base64, ${base64data}`
return image_src
// console.log(img.src)
// let img_blob = await (await fetch(img.src)).blob()
// console.log("img_blob:")
// console.dir(img_blob)
}
async function requestTxt2Img (payload) {
// const url = "http://127.0.0.1:7860"
// const full_url =`${url}/sdapi/v1/txt2img`
// payload = {
// "prompt": "puppy dog",
// "steps": 5
// }
// payload = {
// "prompt": "cute cat, kitten",
// "steps": 10
// }
// response = requests.post(, json=payload)
console.log('requestTxt2Img(): about to send a fetch request')
const full_url = 'http://127.0.0.1:8000/txt2img/'
console.log(full_url)
let request = await fetch(full_url, {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
// "body": payload
})
let json = await request.json()
console.log('json:')
console.dir(json)
// base64data = json.images[0]
// let img = document.getElementById('img1')
// img.src = `data:image/png;base64, ${base64data}`
// console.log(img.src)
// let img_blob = await (await fetch(img.src)).blob()
// console.log("img_blob:")
// console.dir(img_blob)
// try {
// navigator.clipboard.write([
// new ClipboardItem({
// 'image/png': img_blob
// })
// ]);
// } catch (error) {
// console.error(error);
// }
// request.data (data =>{
// console.log(data);
// });
return json
}
async function requestImg2Img (payload) {
console.log('requestTxt2Img(): about to send a fetch request')
const full_url = 'http://127.0.0.1:8000/img2img/'
console.log(full_url)
console.log('requestImg2Img payload is: ', payload)
let request = await fetch(full_url, {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
// "body": payload
})
let json = await request.json()
console.log('json:')
console.dir(json)
return json
}
async function requestProgress () {
console.log('requestProgress: ')
const full_url =
'http://127.0.0.1:8000/sdapi/v1/progress?skip_current_image=false'
let request = await fetch(full_url)
let json = await request.json()
console.log('progress json:')
console.dir(json)
return json
}
async function requestGetModels () {
console.log('requestGetModels: ')
const full_url = 'http://127.0.0.1:8000/sdapi/v1/sd-models'
let request = await fetch(full_url)
let json = await request.json()
console.log('models json:')
console.dir(json)
return json
}
async function requestGetSamplers () {
console.log('requestGetSamplers: ')
const full_url = 'http://127.0.0.1:8000/sdapi/v1/samplers'
let request = await fetch(full_url)
let json = await request.json()
console.log('samplers json:')
console.dir(json)
return json
}
async function requestSwapModel (model_title) {
console.log('requestSwapModel: ')
// const full_url = 'http://127.0.0.1:8000/swapModel'
const full_url = 'http://127.0.0.1:8000/sdapi/v1/options'
payload = {
sd_model_checkpoint: model_title
}
let request = await fetch(full_url, {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
// "body": payload
})
let json = await request.json()
console.log('models json:')
console.dir(json)
return json
}
async function requestInterrupt (model_title) {
console.log('requestSwapModel: ')
// const full_url = 'http://127.0.0.1:8000/swapModel'
const full_url = 'http://127.0.0.1:8000/sdapi/v1/interrupt'
payload = {
sd_model_checkpoint: model_title
}
let request = await fetch(full_url, {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json'
}
// body: JSON.stringify(payload)
// "body": payload
})
let json = await request.json()
console.log('interrupt json:')
console.dir(json)
return json
}
module.exports = {
requestTxt2Img,
requestImg2Img,
getInitImage,
requestProgress,
requestGetModels,
requestSwapModel,
requestInterrupt,
requestGetSamplers
}