4 Commits
Author SHA1 Message Date
christian-byrne 1db83519bb Update version 2025-01-05 11:48:56 -07:00
christian-byrne cb84ac034b Add example workflows 2025-01-05 11:48:44 -07:00
christian-byrne d6b6926267 Remove demo files off master (2/2) 2025-01-05 10:48:13 -07:00
christian-byrne f802b95b9e Remove demo files off master (1/2) 2025-01-05 10:47:08 -07:00
9 changed files with 1350 additions and 2 deletions
+2 -1
View File
@@ -1,7 +1,7 @@
# Img2Color Palette Extractor ComfyUI Node
![alt text](wiki/demo.png)
![alt text](https://github.com/christian-byrne/img2colors-comfyui-node/blob/demo-files/wiki/demo.png?raw=true)
- Uses KMeans clustering to extract the dominant colors from an image
- Uses `webcolors` and `colornamer` to get closest matching color names from various color naming systems
@@ -16,6 +16,7 @@
## Installation
- If you use a virtual environment to run ComfyUI, activate it
- `cd` to the `ComfyUI/custom_nodes` directory
- `git clone` this repository
- `cd` to the `img2colors-comfyui-node` directory
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

@@ -0,0 +1,626 @@
{
"last_node_id": 14,
"last_link_id": 15,
"nodes": [
{
"id": 3,
"type": "KSampler",
"pos": [
1215,
225
],
"size": [
315,
262
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 1
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 14
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 6
},
{
"name": "latent_image",
"type": "LATENT",
"link": 2
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
7
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
386998130320740,
"randomize",
20,
8,
"euler",
"normal",
1
]
},
{
"id": 4,
"type": "CheckpointLoaderSimple",
"pos": [
26,
474
],
"size": [
315,
98
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
1
],
"slot_index": 0
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
3,
5,
15
],
"slot_index": 1
},
{
"name": "VAE",
"type": "VAE",
"links": [
8
],
"slot_index": 2
}
],
"properties": {
"Node name for S&R": "CheckpointLoaderSimple"
},
"widgets_values": [
"v1-5-pruned-emaonly.safetensors"
]
},
{
"id": 5,
"type": "EmptyLatentImage",
"pos": [
473,
609
],
"size": [
315,
106
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
2
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "EmptyLatentImage"
},
"widgets_values": [
512,
512,
1
]
},
{
"id": 6,
"type": "CLIPTextEncode",
"pos": [
415,
186
],
"size": [
422.84503173828125,
164.31304931640625
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 3
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
13
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"beautiful scenery nature glass bottle landscape, , purple galaxy bottle,"
]
},
{
"id": 7,
"type": "CLIPTextEncode",
"pos": [
413,
389
],
"size": [
425.27801513671875,
180.6060791015625
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 5
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
6
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"text, watermark"
]
},
{
"id": 8,
"type": "VAEDecode",
"pos": [
1560,
225
],
"size": [
210,
46
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 7
},
{
"name": "vae",
"type": "VAE",
"link": 8
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
9
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 9,
"type": "SaveImage",
"pos": [
1800,
225
],
"size": [
210,
270
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 9
}
],
"outputs": [],
"properties": {},
"widgets_values": [
"ComfyUI"
]
},
{
"id": 10,
"type": "LoadImage",
"pos": [
-210,
795
],
"size": [
315,
314
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
10
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"example.png",
"image"
]
},
{
"id": 11,
"type": "ConditioningConcat",
"pos": [
915,
420
],
"size": [
253.60000610351562,
60
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "conditioning_to",
"type": "CONDITIONING",
"link": 13
},
{
"name": "conditioning_from",
"type": "CONDITIONING",
"link": 12
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
14
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ConditioningConcat"
},
"widgets_values": []
},
{
"id": 13,
"type": "bmy_Img2ColorNode",
"pos": [
165,
810
],
"size": [
441,
294
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "input_image",
"type": "IMAGE",
"link": 10
}
],
"outputs": [
{
"name": "plain_english_colors",
"type": "STRING",
"links": [
11
],
"slot_index": 0
},
{
"name": "rgb_colors",
"type": "STRING",
"links": null
},
{
"name": "hex_colors",
"type": "STRING",
"links": null
},
{
"name": "xkcd_colors",
"type": "STRING",
"links": null
},
{
"name": "design_colors",
"type": "STRING",
"links": null
},
{
"name": "common_colors",
"type": "STRING",
"links": null
},
{
"name": "color_types",
"type": "STRING",
"links": null
},
{
"name": "color_families",
"type": "STRING",
"links": null
}
],
"properties": {
"Node name for S&R": "bmy_Img2ColorNode"
},
"widgets_values": [
5,
false,
"lloyd",
60,
""
]
},
{
"id": 14,
"type": "CLIPTextEncode",
"pos": [
645,
795
],
"size": [
210,
54
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 15
},
{
"name": "text",
"type": "STRING",
"link": 11,
"widget": {
"name": "text"
}
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
12
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
]
}
],
"links": [
[
1,
4,
0,
3,
0,
"MODEL"
],
[
2,
5,
0,
3,
3,
"LATENT"
],
[
3,
4,
1,
6,
0,
"CLIP"
],
[
5,
4,
1,
7,
0,
"CLIP"
],
[
6,
7,
0,
3,
2,
"CONDITIONING"
],
[
7,
3,
0,
8,
0,
"LATENT"
],
[
8,
4,
2,
8,
1,
"VAE"
],
[
9,
8,
0,
9,
0,
"IMAGE"
],
[
10,
10,
0,
13,
0,
"IMAGE"
],
[
11,
13,
0,
14,
1,
"STRING"
],
[
12,
14,
0,
11,
1,
"CONDITIONING"
],
[
13,
6,
0,
11,
0,
"CONDITIONING"
],
[
14,
11,
0,
3,
1,
"CONDITIONING"
],
[
15,
4,
1,
14,
0,
"CLIP"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.7100000000000001,
"offset": [
573.0927392859467,
208.88112088181836
]
},
"node_versions": {
"comfy-core": "v0.3.10-33-g7da85fa",
"img2colors-comfyui-node": "d6b692626727172c996dd06457da585dce5375fc"
},
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0
},
"version": 0.4
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 860 KiB

@@ -0,0 +1,720 @@
{
"last_node_id": 13,
"last_link_id": 20,
"nodes": [
{
"id": 1,
"type": "CLIPTextEncode",
"pos": [
1027.2030029296875,
496.21923828125
],
"size": [
425.27801513671875,
180.6060791015625
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 1
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
9
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"watermark, text\n"
]
},
{
"id": 2,
"type": "VAEDecode",
"pos": [
2392.203125,
316.21923828125
],
"size": [
210,
46
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 2
},
{
"name": "vae",
"type": "VAE",
"link": 3
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
4
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAEDecode"
}
},
{
"id": 3,
"type": "SaveImage",
"pos": [
2632.203125,
316.21923828125
],
"size": [
210,
270
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 4
}
],
"outputs": [],
"properties": {},
"widgets_values": [
"ComfyUI"
]
},
{
"id": 4,
"type": "VAEEncode",
"pos": [
1170,
780
],
"size": [
210,
46
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "pixels",
"type": "IMAGE",
"link": 5
},
{
"name": "vae",
"type": "VAE",
"link": 6
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
10
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAEEncode"
}
},
{
"id": 5,
"type": "LoadImage",
"pos": [
765,
780
],
"size": [
315,
314.0000305175781
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
5
],
"slot_index": 0
},
{
"name": "MASK",
"type": "MASK",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"example.png",
"image"
]
},
{
"id": 6,
"type": "KSampler",
"pos": [
2032.2030029296875,
316.21923828125
],
"size": [
315,
262
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 7
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 20
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 9
},
{
"name": "latent_image",
"type": "LATENT",
"link": 10
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
2
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
938791198569234,
"randomize",
20,
8,
"dpmpp_2m",
"normal",
0.8700000000000001
]
},
{
"id": 7,
"type": "bmy_Img2ColorNode",
"pos": [
1500,
-195
],
"size": [
441,
294
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "input_image",
"type": "IMAGE",
"link": 15
}
],
"outputs": [
{
"name": "plain_english_colors",
"type": "STRING",
"links": [
18
],
"slot_index": 0
},
{
"name": "rgb_colors",
"type": "STRING",
"links": null
},
{
"name": "hex_colors",
"type": "STRING",
"links": null
},
{
"name": "xkcd_colors",
"type": "STRING",
"links": null
},
{
"name": "design_colors",
"type": "STRING",
"links": null
},
{
"name": "common_colors",
"type": "STRING",
"links": null
},
{
"name": "color_types",
"type": "STRING",
"links": null
},
{
"name": "color_families",
"type": "STRING",
"links": null
}
],
"properties": {
"Node name for S&R": "bmy_Img2ColorNode"
},
"widgets_values": [
5,
false,
"lloyd",
60,
""
]
},
{
"id": 8,
"type": "CLIPTextEncode",
"pos": [
1027.2030029296875,
286.21923828125
],
"size": [
422.84503173828125,
164.31304931640625
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 12
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
16
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"photograph of victorian woman with wings, sky clouds, meadow grass\n"
]
},
{
"id": 9,
"type": "CheckpointLoaderSimple",
"pos": [
615,
540
],
"size": [
315,
98
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
7
],
"slot_index": 0,
"shape": 3
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
1,
12,
17
],
"slot_index": 1,
"shape": 3
},
{
"name": "VAE",
"type": "VAE",
"links": [
3,
6
],
"slot_index": 2,
"shape": 3
}
],
"properties": {
"Node name for S&R": "CheckpointLoaderSimple"
},
"widgets_values": [
"v1-5-pruned-emaonly.safetensors"
]
},
{
"id": 11,
"type": "LoadImage",
"pos": [
765,
-120
],
"size": [
315,
314.0000305175781
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
15
],
"slot_index": 0
},
{
"name": "MASK",
"type": "MASK",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"example.png",
"image"
]
},
{
"id": 12,
"type": "ConditioningConcat",
"pos": [
1560,
345
],
"size": [
380.4000244140625,
46
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "conditioning_to",
"type": "CONDITIONING",
"link": 16
},
{
"name": "conditioning_from",
"type": "CONDITIONING",
"link": 19
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
20
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ConditioningConcat"
}
},
{
"id": 13,
"type": "CLIPTextEncode",
"pos": [
1635,
195
],
"size": [
400,
200
],
"flags": {
"collapsed": true
},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 17
},
{
"name": "text",
"type": "STRING",
"link": 18,
"widget": {
"name": "text"
}
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
19
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
]
}
],
"links": [
[
1,
9,
1,
1,
0,
"CLIP"
],
[
2,
6,
0,
2,
0,
"LATENT"
],
[
3,
9,
2,
2,
1,
"VAE"
],
[
4,
2,
0,
3,
0,
"IMAGE"
],
[
5,
5,
0,
4,
0,
"IMAGE"
],
[
6,
9,
2,
4,
1,
"VAE"
],
[
7,
9,
0,
6,
0,
"MODEL"
],
[
9,
1,
0,
6,
2,
"CONDITIONING"
],
[
10,
4,
0,
6,
3,
"LATENT"
],
[
12,
9,
1,
8,
0,
"CLIP"
],
[
15,
11,
0,
7,
0,
"IMAGE"
],
[
16,
8,
0,
12,
0,
"CONDITIONING"
],
[
17,
9,
1,
13,
0,
"CLIP"
],
[
18,
7,
0,
13,
1,
"STRING"
],
[
19,
13,
0,
12,
1,
"CONDITIONING"
],
[
20,
12,
0,
6,
1,
"CONDITIONING"
]
],
"groups": [
{
"id": 1,
"title": "Content Image",
"bounding": [
705,
705,
735,
420
],
"color": "#3f789e",
"font_size": 24,
"flags": {}
},
{
"id": 2,
"title": "Color Image",
"bounding": [
720,
-225,
720,
450
],
"color": "#3f789e",
"font_size": 24,
"flags": {}
}
],
"config": {},
"extra": {
"ds": {
"scale": 0.665,
"offset": [
-313.46720800158386,
317.0294988678959
]
},
"node_versions": {
"comfy-core": "v0.3.10-33-g7da85fa",
"img2colors-comfyui-node": "d6b692626727172c996dd06457da585dce5375fc"
},
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0
},
"version": 0.4
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 856 KiB

File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1,7 +1,7 @@
[project]
name = "img2colors-comfyui-node"
description = "Extract the most common colors from an image, up to any number. Convert colors to plain English names using various color naming systems."
version = "1.0.2"
version = "1.0.3"
license = "LICENSE"
dependencies = ["colornamer==0.2.3", "scikit_learn>=1.4.0", "webcolors==1.13"]
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 MiB