Color Adjustments & Effects
Brightening images, increasing contrast, adding glow to make them look cool... these are familiar processes for designers and artists.
In image generation, these functions are sometimes used as "preprocessing" to make images easier for AI to use.
There are many custom nodes related to image processing, and more advanced processing is possible, but honestly, there are many situations where it feels easier to use a familiar paint tool.
You don't have to do everything in ComfyUI.
Basic Processing
Invert Image Node

{
"id": "4868028c-000b-496e-b4e0-958cdd175f4a",
"revision": 0,
"last_node_id": 66,
"last_link_id": 95,
"nodes": [
{
"id": 53,
"type": "LoadImage",
"pos": [
73.72727272727276,
158.8181818181818
],
"size": [
318.5017680965466,
400.92742544483326
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
94
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"example.png",
"image"
]
},
{
"id": 65,
"type": "PreviewImage",
"pos": [
662.0453636363629,
158.8181818181818
],
"size": [
361.8754545454541,
401.1706611570247
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 95
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "PreviewImage"
},
"widgets_values": []
},
{
"id": 66,
"type": "ImageInvert",
"pos": [
457.13720223009113,
158.8181818181818
],
"size": [
140,
26
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 94
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
95
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "ImageInvert"
},
"color": "#232",
"bgcolor": "#353"
}
],
"links": [
[
94,
53,
0,
66,
0,
"IMAGE"
],
[
95,
66,
0,
65,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.8264462809917354,
"offset": [
26.272727272727238,
-58.81818181818181
]
},
"frontendVersion": "1.30.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
Generates a negative image with inverted RGB values.
Image Sharpen Node

{
"id": "4868028c-000b-496e-b4e0-958cdd175f4a",
"revision": 0,
"last_node_id": 67,
"last_link_id": 97,
"nodes": [
{
"id": 53,
"type": "LoadImage",
"pos": [
73.72727272727276,
158.8181818181818
],
"size": [
318.5017680965466,
400.92742544483326
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
96
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"example.png",
"image"
]
},
{
"id": 65,
"type": "PreviewImage",
"pos": [
754.6073471074372,
158.8181818181818
],
"size": [
361.8754545454541,
401.1706611570247
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 97
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "PreviewImage"
},
"widgets_values": []
},
{
"id": 67,
"type": "ImageSharpen",
"pos": [
438.4181939656283,
158.8181818181818
],
"size": [
270,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 96
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
97
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "ImageSharpen"
},
"widgets_values": [
20,
1,
1
],
"color": "#232",
"bgcolor": "#353"
}
],
"links": [
[
96,
53,
0,
67,
0,
"IMAGE"
],
[
97,
67,
0,
65,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.9090909090909091,
"offset": [
218.77272727272722,
42.3818181818182
]
},
"frontendVersion": "1.30.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
Sharpens the outlines.
Image Blur Node

{
"id": "4868028c-000b-496e-b4e0-958cdd175f4a",
"revision": 0,
"last_node_id": 68,
"last_link_id": 99,
"nodes": [
{
"id": 65,
"type": "PreviewImage",
"pos": [
754.6073471074372,
158.8181818181818
],
"size": [
361.8754545454541,
401.1706611570247
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 99
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "PreviewImage"
},
"widgets_values": []
},
{
"id": 53,
"type": "LoadImage",
"pos": [
73.72727272727276,
158.8181818181818
],
"size": [
318.5017680965466,
400.92742544483326
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
98
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"example.png",
"image"
]
},
{
"id": 68,
"type": "ImageBlur",
"pos": [
442.1372022300911,
158.8181818181818
],
"size": [
262.5619834710744,
82
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 98
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
99
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "ImageBlur"
},
"widgets_values": [
20,
1
],
"color": "#232",
"bgcolor": "#353"
}
],
"links": [
[
98,
53,
0,
68,
0,
"IMAGE"
],
[
99,
68,
0,
65,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 1,
"offset": [
148.27272727272725,
58.18181818181819
]
},
"frontendVersion": "1.30.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
Blurs the image.
Image Quantize Node

{
"id": "4868028c-000b-496e-b4e0-958cdd175f4a",
"revision": 0,
"last_node_id": 69,
"last_link_id": 102,
"nodes": [
{
"id": 65,
"type": "PreviewImage",
"pos": [
754.6073471074372,
158.8181818181818
],
"size": [
361.8754545454541,
401.1706611570247
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 102
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "PreviewImage"
},
"widgets_values": []
},
{
"id": 53,
"type": "LoadImage",
"pos": [
73.72727272727276,
158.8181818181818
],
"size": [
318.5017680965466,
400.92742544483326
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
101
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"example.png",
"image"
]
},
{
"id": 69,
"type": "ImageQuantize",
"pos": [
441.4181939656283,
158.8181818181818
],
"size": [
264,
82
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 101
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
102
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "ImageQuantize"
},
"widgets_values": [
3,
"none"
],
"color": "#232",
"bgcolor": "#353"
}
],
"links": [
[
101,
53,
0,
69,
0,
"IMAGE"
],
[
102,
69,
0,
65,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 1,
"offset": [
84.27272727272724,
0.18181818181818699
]
},
"frontendVersion": "1.30.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
Reduces the number of colors (posterization).
ImageAddNoise Node

{
"id": "4868028c-000b-496e-b4e0-958cdd175f4a",
"revision": 0,
"last_node_id": 71,
"last_link_id": 104,
"nodes": [
{
"id": 65,
"type": "PreviewImage",
"pos": [
754.6073471074372,
158.8181818181818
],
"size": [
361.8754545454541,
401.1706611570247
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 104
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "PreviewImage"
},
"widgets_values": []
},
{
"id": 53,
"type": "LoadImage",
"pos": [
73.72727272727276,
158.8181818181818
],
"size": [
318.5017680965466,
400.92742544483326
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
103
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"example.png",
"image"
]
},
{
"id": 71,
"type": "ImageAddNoise",
"pos": [
438.4181939656283,
158.8181818181818
],
"size": [
270,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 103
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
104
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "ImageAddNoise"
},
"widgets_values": [
1234,
"fixed",
0.5
],
"color": "#232",
"bgcolor": "#353"
}
],
"links": [
[
103,
53,
0,
71,
0,
"IMAGE"
],
[
104,
71,
0,
65,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 1,
"offset": [
26.272727272727238,
-58.81818181818181
]
},
"frontendVersion": "1.30.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
Adds noise to the image.
Although a bit niche, there is a technique to increase details even with low denoise settings by intentionally adding noise when performing image2image.
cf. Adding noise to pixel images to increase details in image2image with low denoise
Morphological Transformation

{
"id": "4868028c-000b-496e-b4e0-958cdd175f4a",
"revision": 0,
"last_node_id": 72,
"last_link_id": 106,
"nodes": [
{
"id": 65,
"type": "PreviewImage",
"pos": [
754.6073471074372,
158.8181818181818
],
"size": [
361.8754545454541,
401.1706611570247
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 106
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "PreviewImage"
},
"widgets_values": []
},
{
"id": 53,
"type": "LoadImage",
"pos": [
73.72727272727276,
158.8181818181818
],
"size": [
318.5017680965466,
400.92742544483326
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
105
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"example_morphology.png",
"image"
]
},
{
"id": 72,
"type": "Morphology",
"pos": [
443.4958677685951,
158.8181818181818
],
"size": [
270,
82
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 105
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
106
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "Morphology"
},
"widgets_values": [
"gradient",
5
],
"color": "#232",
"bgcolor": "#353"
}
],
"links": [
[
105,
53,
0,
72,
0,
"IMAGE"
],
[
106,
72,
0,
65,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 1.1000000000000003,
"offset": [
26.272727272727238,
-58.81818181818181
]
},
"frontendVersion": "1.30.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
It may be an unfamiliar term, but it is mainly used to process black and white mask images. Processing such as "thickening lines (dilation)" and "removing noise (erosion)" is possible.
cf. OpenCV-Python/Morphological Transformations
Full-scale Color Correction (Custom Nodes)
There are countless custom nodes that add more practical image editing functions like those done in Photoshop. Among them, we will introduce one that covers basic functions and is simple and easy to use.
ComfyUI-Image-Effects

It includes many functions that humans would want to adjust, such as Hue/Saturation/Value adjustment (HSV adjustment), tone curve-like adjustment, and various filters. Please check the repository documentation for a detailed list of functions.