#!/usr/bin/env python3 # GIMP plugin to add a new desaturated layer import sys import gi gi.require_version('Gimp', '3.0') from gi.repository import Gimp gi.require_version('GimpUi', '3.0') from gi.repository import GimpUi from gi.repository import GLib class AddDesaturateLayerPlugin(Gimp.PlugIn): def add_desaturate_layer(image, drawable): # Duplicate the current layer new_layer = drawable.copy() new_layer.set_name("Desaturate") image.insert_layer(new_layer, None, -1) # Apply the desaturation Gimp.edit_desaturate_full( new_layer, Gimp.DesaturateMode.LIGHTNESS # You can use LIGHTNESS, LUMINOSITY, or AVERAGE ) def do_query_procedures(self): return ['python-fu-add-desaturate-layer'] def do_activate(self): pass def do_create_procedure(self, name): if name == 'python-fu-add-desaturate-layer': procedure = Gimp.Procedure.new( self, name, Gimp.PDBProcType.PLUGIN, add_desaturate_layer ) procedure.set_menu_label("Add Desaturate Layer") procedure.add_menu_path('/Filters/') procedure.set_attribution( "YourName", "YourContact", "Adds a desaturated layer" ) procedure.set_documentation( "Adds a new desaturated layer to the active image.", "Adds a new desaturated layer to the active image.", name, ) return procedure Gimp.main(AddDesaturateLayerPlugin.__gtype__, None)