def create_stroke_layer(): global stroke_layer_id image.do_begin() if stroke_layer_id != None: layer.select_id(stroke_layer_id) stroke_index = image.get_layer_index() selection.select_all() selection.delete() layer.select_id(source_layer_id) layer.duplicate() image.move_layer_index(image.get_layer_index(), stroke_index+1) layer.merge_over() else: layer.select_id(source_layer_id) layer.duplicate() layer.set_name("Stroke of "+source_layer_name) layer.set_registry("stroke-source-layer-id", source_layer_id) stroke_layer_id = layer.get_id() stroke_index = image.get_layer_index() image.move_layer_index(stroke_index, stroke_index-1) image.do_end()
def create_shadow_layer(): global shadow_layer_id image.do_begin() if shadow_layer_id != None: layer.select_id(shadow_layer_id) layer.remove() layer.select_id(source_layer_id) layer.duplicate() layer.set_name(FRIENDLY_NAME + " - " + source_layer_name) layer.set_registry("shadow-source-layer-id", source_layer_id) shadow_layer_id = layer.get_id() shadow_index = image.get_layer_index() image.move_layer_index(shadow_index, shadow_index - 1) filters.filter_function(red=overlay_color.red / 255, green=overlay_color.green / 255, blue=overlay_color.blue / 255, gamma_correction=False) layer.set_registry("overlay-color", overlay_color) layer.set_opacity(chosen_opacity) image.do_end()
# Channels > Split HSL from lazpaint import image, dialog, layer, filters # check if it is a channel if layer.get_registry("split-channel") is not None: dialog.show_message("Layer already split") exit() layer_id = layer.get_id() layer_index = image.get_layer_index() layer_opacity = layer.get_opacity() layer_transparent = layer.is_transparent() # check if it has been split if layer.get_registry("split-channels-id") is not None: for cur_layer_id in image.iterate_layers(): if layer.get_registry("split-source-id") == layer_id: dialog.show_message("Layer already split") exit() image.do_begin() channels = [] if layer_transparent: channels.append({ "name": "Alpha", "channel": "A", "hue": "0", "saturation": "0", "lightness": "alpha", "alpha": "255", "blend": layer.BLEND_MASK
source_layer_name = layer.get_name() chosen_radius = layer.get_registry("shadow-radius") if chosen_radius == None: chosen_radius = image.get_registry("shadow-radius") if chosen_radius == None: chosen_radius = 10 chosen_offset = layer.get_registry("shadow-offset") if chosen_offset == None or len(chosen_offset) != 2: chosen_offset = image.get_registry("shadow-offset") if chosen_offset == None or len(chosen_offset) != 2: chosen_offset = (10, 10) shadow_layer_id = layer.get_registry("shadow-layer-id") if image.get_layer_index(shadow_layer_id) == None: shadow_layer_id = None if shadow_layer_id is not None: layer.select_id(shadow_layer_id) chosen_opacity = layer.get_opacity() overlay_color = colors.str_to_RGBA(layer.get_registry("overlay-color")) layer.select_id(source_layer_id) else: chosen_opacity = layer.get_opacity() * 2 / 3 overlay_color = None if overlay_color is None: overlay_color = colors.BLACK
############ image processing MAX_RADIUS = 100 MAX_OPACITY = 255 source_layer_id = layer.get_id() source_layer_name = layer.get_name() chosen_radius = layer.get_registry("stroke-radius") if chosen_radius == None: chosen_radius = image.get_registry("stroke-radius") if chosen_radius == None: chosen_radius = 10 stroke_layer_id = layer.get_registry("stroke-layer-id") if image.get_layer_index(stroke_layer_id) == None: stroke_layer_id = None if stroke_layer_id is not None: layer.select_id(stroke_layer_id) chosen_opacity = layer.get_opacity() overlay_color = colors.str_to_RGBA(layer.get_registry("overlay-color")) layer.select_id(source_layer_id) else: chosen_opacity = layer.get_opacity() overlay_color = None if overlay_color is None: overlay_color = colors.BLACK def create_stroke_layer():
# Channels > Merge from lazpaint import image, dialog, layer channels_id = None new_layer_index = None image.do_begin() if layer.get_registry("split-channel") is not None: layer_id = layer.get_registry("split-source-id") if image.contains_layer_id(layer_id): layer.select_id(layer_id) channels_id = layer.get_registry("split-channels-id") new_layer_index = image.get_layer_index() + 1 else: channels_id = [] for cur_layer_id in image.iterate_layers(): cur_source_id = layer.get_registry("split-source-id") if cur_source_id == layer_id: channels_id.insert(0, cur_layer_id) if new_layer_index is None: new_layer_index = image.get_layer_index() else: layer_id = layer.get_id() channels_id = layer.get_registry("split-channels-id") new_layer_index = image.get_layer_index() + 1 if channels_id is None: dialog.show_message("Current layer is not split") exit() layer.new("Merged channels")
# Split RGB channels (using Pillow) from lazpaint import image, dialog, layer try: from PIL import Image except ImportError: dialog.show_message("Please install Pillow for Python.") exit() # check if it is a channel if layer.get_registry("split-channel") is not None: dialog.show_message("Layer already split") exit() layer_id = layer.get_id() layer_index = image.get_layer_index() layer_opacity = layer.get_opacity() layer_transparent = layer.is_transparent() # check if it has been split if layer.get_registry("split-channels-id") is not None: for i in range(1, layer.get_count()): image.select_layer_index(i) if layer.get_registry("split-source-id") == layer_id: dialog.show_message("Layer already split") exit() layer.select_id(layer_id) temp_name = image.get_temporary_name() temp_name = layer.save_as(temp_name) if temp_name is None: