Nodes/PhotoLab/PhotoLab
ComfyUI Node

PhotoLab

Apply photo lab effects including JPG compression artifacts, film grain, vignette, blur, and color grading. Optionally matches the lighting and shadows of a reference image. Skin effects (pores, freckles, blemishes, acne, texture, SSS, peach fuzz, redness, shine) sit below the mask_mode widget and are fully skipped when mask_mode is 'Disabled', spatially confined to a connected face mask when 'Face Only', or applied outside the mask when 'Inverted'. The mask is also passed through as a second output. A seed input controls all procedural skin effect patterns for reproducibility.

By ialhabbal·Created 5 months ago·Updated 3 months ago· 5
PhotoLab
  • images
  • reference_image
  • face_mask
  • images
  • face_mask
quality70
passes1
pixelate_strength0
grain_strength5
vignette_strength0
color_gradeFaded
color_grade_strength50
saturation70
blur_typeNone
blur_strength0
lighting_match_modeDisabled
lighting_match_strength1.00
mask_modeFace Only
pores_strength0
blemishes_strength0
acne_strength0
freckles_strength0
skin_texture_strength0
sss_strength0
peach_fuzz_strength0
skin_redness_strength0
sebum_shine_strength0
skin_seed0
pores_opacity100
blemishes_opacity100
acne_opacity100
freckles_opacity100
skin_texture_opacity100
Categoryimage/effects

Inputs (31)

NameTypeDefaultDescription
imagesIMAGEThe images to apply photo lab effects to.
qualityINT700–100JPG compression quality. Lower = more artifacts (0-100)
passesINT11–10Number of compression passes. More passes = more degradation
pixelate_strengthINT00–100Pixelation strength. Reduces image to a lower resolution grid and scales back up. Set to 0 to disable (0-100)
grain_strengthINT50–100Amount of film grain. Set to 0 to disable (0-100)
vignette_strengthINT00–100Vignette darkness around edges. Set to 0 to disable (0-100)
color_gradeCOMBOFadedColor grading preset
color_grade_strengthINT500–100Strength of color grade effect. 0 = disabled, 100 = full effect (0-100)
saturationINT700–200Color saturation (0 = grayscale, 100 = original, 200 = max boost)
blur_typeCOMBONoneType of blur to apply
blur_strengthINT00–100Strength of blur effect. Set to 0 to disable (0-100)
lighting_match_modeCOMBODisabledAlgorithm used to match lighting from reference image. 'Histogram (L-channel)' - best all-rounder, matches luminance distribution only. 'Reinhard Transfer' - fast mean/std transfer, good for subtle corrections. 'Full LAB Histogram' - matches all LAB channels including color tone.
lighting_match_strengthFLOAT1.000–1Blend between original (0.0) and fully matched lighting (1.0)
mask_modeCOMBOFace OnlyControls the face_mask and ALL skin effects below this widget. 'Face Only' — skin effects apply only inside the connected mask. 'Inverted' — skin effects apply only outside the mask (e.g. body skin). 'Disabled' — ALL skin effect widgets below are completely skipped; only global effects above (color grade, blur, grain, vignette, compression) run.
pores_strengthINT00–100Simulates visible skin pores via a high-frequency Difference-of-Gaussians texture layer blended in Overlay mode. Subtle: 10-25 | Natural: 30-50 | Heavy/macro: 60-80. Set to 0 to disable.
blemishes_strengthINT00–100Adds soft reddish/brownish skin blemishes (pigmentation spots) using Gaussian-falloff ellipses in melanin-aware colour space. Light: 10-25 | Moderate: 30-55 | Heavy: 60-100. Set to 0 to disable.
acne_strengthINT00–100Renders raised-looking acne spots with a reddish inflamed surround and a subtle specular highlight to suggest a 3-D bump. Few/mild: 10-25 | Moderate breakout: 30-55 | Severe: 60-100. Set to 0 to disable.
freckles_strengthINT00–100Scatters small melanin-tinted freckles concentrated on cheeks and nose bridge, with randomised size, opacity, and slight colour variation. Light dusting: 10-25 | Natural coverage: 30-55 | Dense: 60-100. Set to 0 to disable.
skin_texture_strengthINT00–100Enhances micro skin texture (fine lines, pore shadows, subtle relief) by boosting a high-frequency detail layer extracted via unsharp masking. Subtle: 10-20 | Natural film look: 25-45 | Hyper-detailed: 50-70. Set to 0 to disable.
sss_strengthINT00–100Subsurface scattering: adds a warm translucent glow beneath skin by Screen-blending a low-opacity orange-pink blurred layer, simulating how light travels through the dermis. Breaks the flat opaque 'plastic' AI look. Subtle: 5-15 | Natural: 16-35 | Strong: 36-60. Set to 0 to disable.
peach_fuzz_strengthINT00–100Renders procedural vellus (peach fuzz) hair as fine curved micro-strokes oriented downward with slight random angles, at very low opacity. Dramatically breaks the AI plastic-skin look by adding the fine hair that covers real faces. Barely visible: 5-15 | Natural: 16-40 | Dense: 41-70. Set to 0 to disable.
skin_redness_strengthINT00–100Adds natural facial redness zones — cheeks, nose tip, chin — from blood vessels near the skin surface, using soft Gaussian blobs in warm-red tint. Subtle flush: 5-20 | Rosy cheeks: 21-50 | Strong redness: 51-80. Set to 0 to disable.
sebum_shine_strengthINT00–100Simulates T-zone sebum/oil shine (forehead, nose bridge, chin) using small specular highlight ellipses in Screen blend. Adds the natural sheen of oily skin without overexposing the whole image. Matte skin: 0 | Light shine: 5-20 | Oily: 21-55 | Very oily: 56-80. Set to 0 to disable.
skin_seedINT00–2147483647Master seed for all procedural skin effects (pores, freckles, blemishes, acne, peach fuzz, shine). Same seed always produces the same pattern on the same image. Change to get a different arrangement of spots, pores, and hairs.
pores_opacityINT1000–100Opacity of the pores effect (0 = invisible, 100 = full). Controls visibility independently of density/strength.
blemishes_opacityINT1000–100Opacity of blemishes (0 = invisible, 100 = full). Allows many faint marks vs few vivid ones.
acne_opacityINT1000–100Opacity of acne spots (0 = invisible, 100 = full).
freckles_opacityINT1000–100Opacity of freckles (0 = invisible, 100 = full). Allows dense faint freckles vs sparse vivid ones.
skin_texture_opacityINT1000–100Opacity of the skin texture effect (0 = invisible, 100 = full).
reference_imageoptIMAGEReference image whose lighting and shadows will be matched onto the input images. Only used when lighting_match_mode is not 'Disabled'.
face_maskoptMASKOptional grayscale mask (0 = no effect, 1 = full effect) used to spatially restrict skin effects. Behaviour set by mask_mode: 'Face Only' keeps effects inside the mask; 'Inverted' keeps them outside; 'Disabled' skips all skin effects entirely regardless of this input.

Outputs (2)

NameTypeDescription
imagesIMAGE
face_maskMASK