Keep accumulator previews stable when reordered
This commit is contained in:
+16
-1
@@ -54,6 +54,14 @@ INDEX_SWITCH_MISSING_BEHAVIORS = ["fallback", "none", "clamp", "wrap"]
|
||||
_ACCUMULATOR_STORES: dict[str, list[dict[str, Any]]] = {}
|
||||
|
||||
|
||||
def _entry_preview_key(entry: dict[str, Any]) -> str:
|
||||
key = str(entry.get("_sxcp_preview_key") or "").strip()
|
||||
if not key:
|
||||
key = f"entry_{random.getrandbits(64):016x}"
|
||||
entry["_sxcp_preview_key"] = key
|
||||
return key
|
||||
|
||||
|
||||
class AnyType(str):
|
||||
def __ne__(self, _other: object) -> bool:
|
||||
return False
|
||||
@@ -218,6 +226,7 @@ def _entry_infos(store: list[dict[str, Any]]) -> list[dict[str, Any]]:
|
||||
{
|
||||
"index": index,
|
||||
"id": str(entry.get("id") or ""),
|
||||
"preview_key": _entry_preview_key(entry),
|
||||
"has_image": image is not None,
|
||||
"has_metadata": has_metadata,
|
||||
"shape": list(shape) if shape is not None else [],
|
||||
@@ -424,7 +433,13 @@ def _preview_image_results(
|
||||
metadata = _metadata_for_entry(entry, prompt, extra_pnginfo)
|
||||
file = f"{filename}_{counter:05}_.png"
|
||||
_image_to_pil(image).save(os.path.join(full_output_folder, file), pnginfo=metadata, compress_level=1)
|
||||
results.append({"filename": file, "subfolder": subfolder, "type": "temp"})
|
||||
results.append({
|
||||
"filename": file,
|
||||
"subfolder": subfolder,
|
||||
"type": "temp",
|
||||
"preview_key": _entry_preview_key(entry),
|
||||
"entry_id": str(entry.get("id") or ""),
|
||||
})
|
||||
counter += 1
|
||||
return results
|
||||
|
||||
|
||||
Reference in New Issue
Block a user