Files
Carasibana-ComfyUI-ResizeTo…/examples/ResizeToCanvasSize_Example_Workflow.json
Carasibana 92899ca312 Add ResizeToCanvasSizeMask node with 7x7 COI grid and example workflow
New node: Resize To Canvas Size (COI)
- Computes a Centre of Interest from an optional mask (bounding box centre
  or weighted centroid/centre of mass) and places it at a user-selected
  point on the canvas
- 7x7 target grid (49 dots overlaid on the 3x3 nonant background) lets the
  user pick any canvas fraction in steps of 1/6; default (3,3) = canvas centre
- Three anchor modes: manual (image centre), mask_bbox_centre, mask_weighted_centre
- Graceful fallback to image centre when no mask is connected or mask is all zeros
- Mask is auto-resized if its dimensions differ from the source image
- All existing fill/scale/padding options carried over from the original node

Also adds:
- examples/ResizeToCanvasSize_Example_Workflow.json demonstrating both nodes
  side by side with a face-detection COI pipeline (UltralyticsDetectorProvider
  -> BboxDetectorSEGS -> SAMDetectorCombined -> ResizeToCanvasSizeMask)
- Updated README documenting both nodes, the 7x7 grid concept, COI modes,
  and a face-centred portrait crop recipe
2026-03-18 17:35:13 -04:00

661 lines
11 KiB
JSON

{
"id": "a1eed0c4-1c0f-4742-81b7-0a68e029e2f2",
"revision": 0,
"last_node_id": 17,
"last_link_id": 18,
"nodes": [
{
"id": 1,
"type": "ResizeToCanvasSize",
"pos": [
1800,
1275
],
"size": [
263.76666259765625,
378
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 1
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
2
]
},
{
"name": "padding_mask",
"type": "MASK",
"links": [
3
]
}
],
"properties": {
"Node name for S&R": "ResizeToCanvasSize",
"ue_properties": {
"widget_ue_connectable": {},
"input_ue_unconnectable": {},
"version": "7.6.2"
}
},
"widgets_values": [
1280,
1536,
"top_center",
"Fit to Canvas short edge",
"crop",
"noise",
"#341cc1",
755004533296303,
"randomize"
]
},
{
"id": 3,
"type": "PreviewImage",
"pos": [
2190,
1245
],
"size": [
300,
405
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 2
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewImage",
"ue_properties": {
"widget_ue_connectable": {},
"input_ue_unconnectable": {},
"version": "7.6.2"
}
},
"widgets_values": []
},
{
"id": 16,
"type": "PreviewImage",
"pos": [
2205,
1770
],
"size": [
300,
405
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 17
}
],
"outputs": [],
"properties": {
"ue_properties": {
"widget_ue_connectable": {},
"input_ue_unconnectable": {},
"version": "7.6.2"
},
"Node name for S&R": "PreviewImage"
},
"widgets_values": []
},
{
"id": 5,
"type": "MaskPreview",
"pos": [
2595,
1530
],
"size": [
140,
246
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "mask",
"type": "MASK",
"link": 3
}
],
"outputs": [],
"properties": {
"Node name for S&R": "MaskPreview",
"ue_properties": {
"widget_ue_connectable": {},
"input_ue_unconnectable": {},
"version": "7.6.2"
}
},
"widgets_values": []
},
{
"id": 17,
"type": "MaskPreview",
"pos": [
2595,
1920
],
"size": [
140,
246
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "mask",
"type": "MASK",
"link": 18
}
],
"outputs": [],
"properties": {
"ue_properties": {
"widget_ue_connectable": {},
"input_ue_unconnectable": {},
"version": "7.6.2"
},
"Node name for S&R": "MaskPreview"
},
"widgets_values": []
},
{
"id": 7,
"type": "ResizeToCanvasSizeMask",
"pos": [
1810.2851536243224,
1770.9635148123862
],
"size": [
323.76666259765625,
436
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 5
},
{
"name": "mask",
"shape": 7,
"type": "MASK",
"link": 16
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
17
]
},
{
"name": "padding_mask",
"type": "MASK",
"links": [
18
]
}
],
"properties": {
"Node name for S&R": "ResizeToCanvasSizeMask",
"ue_properties": {
"widget_ue_connectable": {},
"input_ue_unconnectable": {},
"version": "7.6.2"
}
},
"widgets_values": [
1280,
1536,
"3,2",
"mask_bbox_centre",
"Fit to Canvas width",
"crop",
"noise",
"#000000",
937205624074127,
"randomize"
]
},
{
"id": 13,
"type": "BboxDetectorSEGS",
"pos": [
720,
1965
],
"size": [
400,
224
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [
{
"name": "bbox_detector",
"type": "BBOX_DETECTOR",
"link": 10
},
{
"name": "image",
"type": "IMAGE",
"link": 11
},
{
"name": "detailer_hook",
"shape": 7,
"type": "DETAILER_HOOK",
"link": null
}
],
"outputs": [
{
"name": "SEGS",
"type": "SEGS",
"links": [
13
]
}
],
"properties": {
"ue_properties": {
"widget_ue_connectable": {},
"input_ue_unconnectable": {}
},
"Node name for S&R": "BboxDetectorSEGS"
},
"widgets_values": [
0.5,
10,
3,
10,
"all"
]
},
{
"id": 14,
"type": "SAMDetectorCombined",
"pos": [
1200,
1965
],
"size": [
301.3833312988281,
218
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "sam_model",
"type": "SAM_MODEL",
"link": 12
},
{
"name": "segs",
"type": "SEGS",
"link": 13
},
{
"name": "image",
"type": "IMAGE",
"link": 14
}
],
"outputs": [
{
"name": "MASK",
"type": "MASK",
"links": [
15,
16
]
}
],
"properties": {
"ue_properties": {
"widget_ue_connectable": {},
"input_ue_unconnectable": {}
},
"Node name for S&R": "SAMDetectorCombined"
},
"widgets_values": [
"center-1",
0,
0.93,
0,
0.7,
"False"
]
},
{
"id": 10,
"type": "SAMLoader",
"pos": [
795,
2250
],
"size": [
320,
91.33333841959636
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "SAM_MODEL",
"type": "SAM_MODEL",
"slot_index": 0,
"links": [
12
]
}
],
"properties": {
"ue_properties": {
"version": "7.0.1",
"widget_ue_connectable": {},
"input_ue_unconnectable": {}
},
"Node name for S&R": "SAMLoader",
"cnr_id": "comfyui-impact-pack",
"ver": "00c37316167ab36157ceaac54b8b3eab0f828e21"
},
"widgets_values": [
"sam_vit_b_01ec64.pth",
"AUTO"
],
"color": "#223",
"bgcolor": "#335"
},
{
"id": 11,
"type": "UltralyticsDetectorProvider",
"pos": [
375,
2265
],
"size": [
315,
83.00000508626303
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "BBOX_DETECTOR",
"type": "BBOX_DETECTOR",
"slot_index": 0,
"links": [
10
]
},
{
"name": "SEGM_DETECTOR",
"type": "SEGM_DETECTOR",
"links": null
}
],
"properties": {
"ue_properties": {
"version": "7.0.1",
"widget_ue_connectable": {},
"input_ue_unconnectable": {}
},
"Node name for S&R": "UltralyticsDetectorProvider",
"cnr_id": "comfyui-impact-subpack",
"ver": "1.3.5"
},
"widgets_values": [
"bbox/face_yolov8m.pt"
],
"color": "#223",
"bgcolor": "#335"
},
{
"id": 2,
"type": "LoadImage",
"pos": [
705,
1470
],
"size": [
280,
314
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
1,
5,
11,
14
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"Node name for S&R": "LoadImage",
"ue_properties": {
"widget_ue_connectable": {},
"version": "7.6.2",
"input_ue_unconnectable": {}
}
},
"widgets_values": [
"Bowsett_rework_02-16x9.png",
"image"
]
},
{
"id": 15,
"type": "MaskPreview",
"pos": [
1530,
2100
],
"size": [
140,
246
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "mask",
"type": "MASK",
"link": 15
}
],
"outputs": [],
"properties": {
"ue_properties": {
"widget_ue_connectable": {},
"input_ue_unconnectable": {},
"version": "7.6.2"
},
"Node name for S&R": "MaskPreview"
},
"widgets_values": []
}
],
"links": [
[
1,
2,
0,
1,
0,
"IMAGE"
],
[
2,
1,
0,
3,
0,
"IMAGE"
],
[
3,
1,
1,
5,
0,
"MASK"
],
[
5,
2,
0,
7,
0,
"IMAGE"
],
[
10,
11,
0,
13,
0,
"BBOX_DETECTOR"
],
[
11,
2,
0,
13,
1,
"IMAGE"
],
[
12,
10,
0,
14,
0,
"SAM_MODEL"
],
[
13,
13,
0,
14,
1,
"SEGS"
],
[
14,
2,
0,
14,
2,
"IMAGE"
],
[
15,
14,
0,
15,
0,
"MASK"
],
[
16,
14,
0,
7,
1,
"MASK"
],
[
17,
7,
0,
16,
0,
"IMAGE"
],
[
18,
7,
1,
17,
0,
"MASK"
]
],
"groups": [],
"config": {},
"extra": {
"workflowRendererVersion": "LG",
"ue_links": [],
"links_added_by_ue": [],
"ds": {
"scale": 0.5209868481924376,
"offset": [
-82.00973280024787,
-805.0493159154729
]
},
"frontendVersion": "1.41.20",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": false,
"VHS_KeepIntermediate": true
},
"version": 0.4
}