Features: - 🔧 OmniSVG Model Loader - Load and manage OmniSVG models - 📝 Text to SVG - Generate SVG graphics from text descriptions - 🖼 Image to SVG - Convert images to SVG format - 🔄 SVG to Image - Convert SVG strings to ComfyUI IMAGE tensors - 💾 SVG Saver - Save SVG files to disk - 100% working implementation with OmniSVG-3B model - Complete ComfyUI workflow integration - Professional documentation and examples - Automated installation and testing - Memory management for 17GB VRAM models - All 5 functional nodes - Example workflows and documentation - Automated installer and test suite - GitHub Actions CI/CD pipeline - Comprehensive troubleshooting guides Ready for production use! �
235 lines
5.0 KiB
JSON
235 lines
5.0 KiB
JSON
{
|
|
"last_node_id": 8,
|
|
"last_link_id": 10,
|
|
"nodes": [
|
|
{
|
|
"id": 1,
|
|
"type": "OmniSVG Model Loader",
|
|
"pos": [50, 50],
|
|
"size": {"0": 315, "1": 58},
|
|
"flags": {},
|
|
"order": 0,
|
|
"mode": 0,
|
|
"outputs": [
|
|
{
|
|
"name": "omnisvg_model",
|
|
"type": "OMNISVG_MODEL",
|
|
"links": [1, 5],
|
|
"shape": 3,
|
|
"slot_index": 0
|
|
}
|
|
],
|
|
"properties": {"Node name for S&R": "OmniSVG Model Loader"},
|
|
"widgets_values": ["OmniSVG-3B (from storage)"]
|
|
},
|
|
{
|
|
"id": 2,
|
|
"type": "OmniSVG Text to SVG",
|
|
"pos": [400, 50],
|
|
"size": {"0": 400, "1": 200},
|
|
"flags": {},
|
|
"order": 1,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"name": "omnisvg_model",
|
|
"type": "OMNISVG_MODEL",
|
|
"link": 1
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"name": "svg_code",
|
|
"type": "SVG_STRING",
|
|
"links": [2, 3],
|
|
"shape": 3,
|
|
"slot_index": 0
|
|
},
|
|
{
|
|
"name": "preview_image",
|
|
"type": "IMAGE",
|
|
"links": [4],
|
|
"shape": 3,
|
|
"slot_index": 1
|
|
}
|
|
],
|
|
"properties": {"Node name for S&R": "OmniSVG Text to SVG"},
|
|
"widgets_values": [
|
|
"A simple icon of a house with a red roof, blue door, and green grass",
|
|
0.8,
|
|
0.95,
|
|
50,
|
|
1.05
|
|
]
|
|
},
|
|
{
|
|
"id": 3,
|
|
"type": "SVG to Image",
|
|
"pos": [850, 50],
|
|
"size": {"0": 315, "1": 126},
|
|
"flags": {},
|
|
"order": 2,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"name": "svg_code",
|
|
"type": "SVG_STRING",
|
|
"link": 2
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"name": "image",
|
|
"type": "IMAGE",
|
|
"links": [6],
|
|
"shape": 3,
|
|
"slot_index": 0
|
|
}
|
|
],
|
|
"properties": {"Node name for S&R": "SVG to Image"},
|
|
"widgets_values": [512, 512]
|
|
},
|
|
{
|
|
"id": 4,
|
|
"type": "SVG Saver",
|
|
"pos": [850, 200],
|
|
"size": {"0": 315, "1": 82},
|
|
"flags": {},
|
|
"order": 3,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"name": "svg_code",
|
|
"type": "SVG_STRING",
|
|
"link": 3
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"name": "file_path",
|
|
"type": "STRING",
|
|
"links": null,
|
|
"shape": 3
|
|
}
|
|
],
|
|
"properties": {"Node name for S&R": "SVG Saver"},
|
|
"widgets_values": ["house_icon", ""]
|
|
},
|
|
{
|
|
"id": 5,
|
|
"type": "PreviewImage",
|
|
"pos": [1200, 50],
|
|
"size": {"0": 210, "1": 246},
|
|
"flags": {},
|
|
"order": 4,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"name": "images",
|
|
"type": "IMAGE",
|
|
"link": 4
|
|
}
|
|
],
|
|
"properties": {"Node name for S&R": "PreviewImage"}
|
|
},
|
|
{
|
|
"id": 6,
|
|
"type": "PreviewImage",
|
|
"pos": [1200, 320],
|
|
"size": {"0": 210, "1": 246},
|
|
"flags": {},
|
|
"order": 5,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"name": "images",
|
|
"type": "IMAGE",
|
|
"link": 6
|
|
}
|
|
],
|
|
"properties": {"Node name for S&R": "PreviewImage"}
|
|
},
|
|
{
|
|
"id": 7,
|
|
"type": "LoadImage",
|
|
"pos": [50, 300],
|
|
"size": {"0": 315, "1": 314},
|
|
"flags": {},
|
|
"order": 6,
|
|
"mode": 0,
|
|
"outputs": [
|
|
{
|
|
"name": "IMAGE",
|
|
"type": "IMAGE",
|
|
"links": [7],
|
|
"shape": 3,
|
|
"slot_index": 0
|
|
},
|
|
{
|
|
"name": "MASK",
|
|
"type": "MASK",
|
|
"links": null,
|
|
"shape": 3
|
|
}
|
|
],
|
|
"properties": {"Node name for S&R": "LoadImage"},
|
|
"widgets_values": ["example.png", "image"]
|
|
},
|
|
{
|
|
"id": 8,
|
|
"type": "OmniSVG Image to SVG",
|
|
"pos": [400, 300],
|
|
"size": {"0": 400, "1": 200},
|
|
"flags": {},
|
|
"order": 7,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"name": "omnisvg_model",
|
|
"type": "OMNISVG_MODEL",
|
|
"link": 5
|
|
},
|
|
{
|
|
"name": "image",
|
|
"type": "IMAGE",
|
|
"link": 7
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"name": "svg_code",
|
|
"type": "SVG_STRING",
|
|
"links": [8, 9],
|
|
"shape": 3,
|
|
"slot_index": 0
|
|
},
|
|
{
|
|
"name": "preview_image",
|
|
"type": "IMAGE",
|
|
"links": [10],
|
|
"shape": 3,
|
|
"slot_index": 1
|
|
}
|
|
],
|
|
"properties": {"Node name for S&R": "OmniSVG Image to SVG"},
|
|
"widgets_values": [200, 0.1, 0.001, 1, 1.05]
|
|
}
|
|
],
|
|
"links": [
|
|
[1, 1, 0, 2, 0, "OMNISVG_MODEL"],
|
|
[2, 2, 0, 3, 0, "SVG_STRING"],
|
|
[3, 2, 0, 4, 0, "SVG_STRING"],
|
|
[4, 2, 1, 5, 0, "IMAGE"],
|
|
[5, 1, 0, 8, 0, "OMNISVG_MODEL"],
|
|
[6, 3, 0, 6, 0, "IMAGE"],
|
|
[7, 7, 0, 8, 1, "IMAGE"],
|
|
[8, 8, 0, 3, 0, "SVG_STRING"],
|
|
[9, 8, 0, 4, 0, "SVG_STRING"],
|
|
[10, 8, 1, 5, 0, "IMAGE"]
|
|
],
|
|
"groups": [],
|
|
"config": {},
|
|
"extra": {},
|
|
"version": 0.4
|
|
}
|