Files
pythongosssss-ComfyUI-Custo…/upload-image/uploadImage.js
T

55 lines
1.2 KiB
JavaScript

import { app } from "/scripts/app.js";
// Adds a new UploadImage node
const toBase64 = (file) =>
new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => resolve(reader.result);
reader.onerror = (error) => reject(error);
});
app.registerExtension({
name: "Comfy.UploadImage",
async getCustomWidgets() {
return {
B64IMAGE(node) {
let uploadWidget;
const fileInput = document.createElement("input");
Object.assign(fileInput, {
type: "file",
accept: "image/jpeg,image/png",
style: "display: none",
onchange: () => {
if (fileInput.files.length) {
const img = new Image();
img.onload = () => {
node.imgs = [img];
};
toBase64(fileInput.files[0]).then((d) => {
img.src = d;
});
}
},
});
document.body.append(fileInput);
uploadWidget = node.addWidget("button", "image", "image", () => {
fileInput.click();
});
uploadWidget.serializeValue = () => {
if(node.imgs && node.imgs.length) {
return node.imgs[0].src;
}
return null;
};
return { widget: uploadWidget };
},
};
},
});