Files
BlackVortexAI-bv_nodepack/scripts/embed_example_workflows.py
T

46 lines
1.6 KiB
Python

from __future__ import annotations
import json
from pathlib import Path
from PIL import Image, PngImagePlugin
ROOT = Path(__file__).resolve().parents[1]
IMAGES = ROOT / "examples" / "images"
WORKFLOWS = ROOT / "examples" / "workflows"
EXAMPLES = {
"prompt-ast-categories": ((40, 160, 1240, 550), "_ast-full.png"),
"empty-latent-random-ratio": (None, None),
"subgraph-ui-layout": (None, None),
"smart-pipe-wireless-merge": ((40, 160, 1240, 500), "_smart-full.png"),
"control-center-workflow-states": ((150, 150, 1120, 610), "_control-full.png"),
}
CONFIG_SCREENSHOTS = {
"smart-pipe-slot-config.png": (180, 175, 1100, 550),
"smart-pipe-merge-config.png": (250, 195, 1030, 525),
"control-center-config.png": (180, 80, 1110, 640),
}
for stem, (crop, source_name) in EXAMPLES.items():
workflow_path = WORKFLOWS / f"{stem}.json"
source_path = IMAGES / (source_name or f"{stem}.png")
target_path = IMAGES / f"{stem}.png"
workflow = json.loads(workflow_path.read_text(encoding="utf-8"))
with Image.open(source_path) as source:
image = source.crop(crop) if crop else source.copy()
metadata = PngImagePlugin.PngInfo()
metadata.add_text("workflow", json.dumps(workflow, separators=(",", ":"), ensure_ascii=False))
image.save(target_path, pnginfo=metadata, optimize=True)
for name, crop in CONFIG_SCREENSHOTS.items():
path = IMAGES / name
with Image.open(path) as source:
source.crop(crop).save(path, optimize=True)
for temporary in (IMAGES / "_smart-full.png", IMAGES / "_control-full.png", IMAGES / "_ast-full.png"):
temporary.unlink(missing_ok=True)