@@ -182,6 +182,10 @@ public abstract class ComfyUIAPIAbstractBackend : AbstractT2IBackend
|
||||
Logs.Verbose("Will await a job, do parse...");
|
||||
JObject workflowJson = Utilities.ParseToJson(workflow);
|
||||
Logs.Verbose("JSON parsed.");
|
||||
JObject metadataObj = user_input.GenMetadataObject();
|
||||
metadataObj["is_preview"] = true;
|
||||
metadataObj["preview_notice"] = "Image is not done generating";
|
||||
string previewMetadata = T2IParamInput.MetadataToString(metadataObj);
|
||||
int expectedNodes = workflowJson.Count;
|
||||
string id = null;
|
||||
ClientWebSocket socket = null;
|
||||
@@ -226,6 +230,7 @@ public abstract class ComfyUIAPIAbstractBackend : AbstractT2IBackend
|
||||
takeOutput(new JObject()
|
||||
{
|
||||
["batch_index"] = batchId,
|
||||
["metadata"] = previewMetadata,
|
||||
["overall_percent"] = nodesDone / (float)expectedNodes,
|
||||
["current_percent"] = curPercent
|
||||
});
|
||||
|
||||
@@ -706,6 +706,12 @@ public class T2IParamInput
|
||||
public string GenRawMetadata()
|
||||
{
|
||||
JObject obj = GenMetadataObject();
|
||||
return MetadataToString(obj);
|
||||
}
|
||||
|
||||
/// <summary>Converts a metadata JSON object to a string.</summary>
|
||||
public static string MetadataToString(JObject obj)
|
||||
{
|
||||
return JsonConvert.SerializeObject(new JObject() { ["sui_image_params"] = obj }, SafeSerializer).Replace("\r\n", "\n");
|
||||
}
|
||||
|
||||
|
||||
@@ -136,7 +136,9 @@ class GenerateHandler {
|
||||
}
|
||||
if (data.batch_index in images) {
|
||||
images[data.batch_index].image = data.image;
|
||||
images[data.batch_index].metadata = data.metadata;
|
||||
if (data.metadata) {
|
||||
images[data.batch_index].metadata = data.metadata;
|
||||
}
|
||||
discardable[data.batch_index] = images[data.batch_index];
|
||||
delete images[data.batch_index];
|
||||
}
|
||||
@@ -144,9 +146,10 @@ class GenerateHandler {
|
||||
if (data.gen_progress) {
|
||||
let thisBatchId = `${batch_id}_${data.gen_progress.batch_index}`;
|
||||
if (!(data.gen_progress.batch_index in images)) {
|
||||
let batch_div = this.gotImagePreview(data.gen_progress.preview ?? 'imgs/model_placeholder.jpg', `{"preview": "${data.gen_progress.current_percent}"}`, thisBatchId);
|
||||
let metadataRaw = data.gen_progress.metadata ?? '{}';
|
||||
let batch_div = this.gotImagePreview(data.gen_progress.preview ?? 'imgs/model_placeholder.jpg', metadataRaw, thisBatchId);
|
||||
if (batch_div) {
|
||||
images[data.gen_progress.batch_index] = {div: batch_div, image: null, metadata: null, overall_percent: 0, current_percent: 0};
|
||||
images[data.gen_progress.batch_index] = {div: batch_div, image: null, metadata: metadataRaw, overall_percent: 0, current_percent: 0};
|
||||
let progress_bars = createDiv(null, 'image-preview-progress-wrapper', this.progressBarHtml);
|
||||
batch_div.prepend(progress_bars);
|
||||
}
|
||||
@@ -160,16 +163,12 @@ class GenerateHandler {
|
||||
overall.style.width = `${imgHolder.overall_percent * 100}%`;
|
||||
imgHolder.div.querySelector('.image-preview-progress-current').style.width = `${imgHolder.current_percent * 100}%`;
|
||||
if (data.gen_progress.preview && autoLoadPreviewsElem.checked && imgHolder.image == null) {
|
||||
this.setCurrentImage(data.gen_progress.preview, `{"preview": "${data.gen_progress.current_percent}"}`, thisBatchId, true);
|
||||
this.setCurrentImage(data.gen_progress.preview, imgHolder.metadata, thisBatchId, true);
|
||||
}
|
||||
let curImgElem = document.getElementById(this.imageId);
|
||||
if (data.gen_progress.preview && (!imgHolder.image || data.gen_progress.preview != imgHolder.image)) {
|
||||
if (curImgElem && curImgElem.dataset.batch_id == thisBatchId) {
|
||||
curImgElem.src = data.gen_progress.preview;
|
||||
let metadata = getRequiredElementById(this.imageContainerDivId).querySelector('.current-image-data');
|
||||
if (metadata) {
|
||||
metadata.remove();
|
||||
}
|
||||
}
|
||||
imgHolder.div.dataset.src = data.gen_progress.preview;
|
||||
imgHolder.div.querySelector('img').src = data.gen_progress.preview;
|
||||
|
||||
Reference in New Issue
Block a user