#!/usr/bin/env python from gimpfu import * def py_luminance_extract(img, draw): pdb.gimp_image_undo_group_start(img) name = pdb.gimp_drawable_get_name(draw) newlayer = pdb.gimp_layer_copy(draw, 0) pdb.gimp_image_add_layer(img, newlayer, -1) pdb.gimp_desaturate_full(newlayer, 1) newlayer2 = pdb.gimp_layer_copy(newlayer, 1) pdb.gimp_image_add_layer(img, newlayer2, -1) pdb.gimp_layer_set_mode(newlayer, GRAIN_EXTRACT_MODE) ndraw = pdb.gimp_image_merge_down(img, newlayer, 0) pdb.gimp_layer_set_mode(newlayer2, GRAIN_MERGE_MODE) pdb.gimp_drawable_set_name(ndraw, name + " Chroma") pdb.gimp_drawable_set_name(newlayer2, name + " Luminance") pdb.gimp_image_undo_group_end(img) register( "luminance_extract", "Extract luminance from a layer", "Extracts the luminance from a layer", "dd", "2011", "2011", "/Filters/Luminance/_Extract...", "RGB*", [], [], py_luminance_extract) def py_luminance_remove(img, draw): pdb.gimp_image_undo_group_start(img) newlayer = pdb.gimp_layer_copy(draw, 0) pdb.gimp_image_add_layer(img, newlayer, -1) pdb.gimp_desaturate_full(newlayer, 1) pdb.gimp_layer_set_mode(newlayer, GRAIN_EXTRACT_MODE) pdb.gimp_image_merge_down(img, newlayer, 0) pdb.gimp_image_undo_group_end(img) register( "luminance_remove", "Remove luminance from a layer", "Removes the luminance from a layer", "dd", "2011", "2011", "/Filters/Luminance/_Remove...", "RGB*", [], [], py_luminance_remove) def py_luminance_hsadjust(img, draw, hue, sat): name = pdb.gimp_drawable_get_name(draw) pdb.gimp_image_undo_group_start(img) pos = pdb.gimp_image_get_layer_position(img, draw) pdb.python_fu_luminance_extract(img, draw) llayer = img.layers[pos] clayer = img.layers[pos+1] pdb.gimp_hue_saturation(clayer, 0, hue, 0, sat) pdb.python_fu_luminance_remove(img, clayer) ndraw = pdb.gimp_image_merge_down(img, llayer, 0) pdb.gimp_drawable_set_name(ndraw, name) pdb.gimp_image_undo_group_end(img) register( "luminance_hsadjust", "Adjust hue/saturation while preserving luminance", "Adjusts hue/saturation while preserving luminance", "dd", "2011", "2011", "/Filters/Luminance/_Hue-Saturation...", "RGB*", [ (PF_SLIDER, "hue", "Hue", 0, (-180, 180, 1)), (PF_SLIDER, "sat", "Saturation", 0, (-100, 100, 1)) ], [], py_luminance_hsadjust) main()