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()
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()
corrected_hue=False) layer.set_name(translation[ch["name"]]) layer.set_opacity(layer_opacity) if ch["channel"] == "A": layer.set_blend_op(layer.BLEND_MASK) layer.set_registry("split-channel", ch["channel"]) layer.set_registry("split-source-id", layer_id) if ch["channel"] == "K": black_id = layer.get_id() layer.duplicate() layer.set_blend_op(layer.BLEND_DIVIDE) black_div_id = layer.get_id() layer.select_id(layer_id) layer.duplicate() copy_index = image.get_layer_index() image.move_layer_index(copy_index, copy_index + 1) image.select_layer_index(copy_index + 2) layer.merge_over() cmy_id = layer.get_id() else: channels_id.append(layer.get_id()) if cmy_id is not None: channels = [] channels.append({ "name": "Cyan", "channel": "C", "red": "red", "green": "1", "blue": "1", "alpha": "255"
exit() channels[ch] = Image.open(temp_name).getchannel(ch) merged = Image.merge( "RGBA", [channels["R"], channels["G"], channels["B"], channels["A"]]) merged.save(temp_name, "PNG") for ch_id in channels_id: if image.contains_layer_id(ch_id): layer.select_id(ch_id) layer.remove() layer.add_from_file(temp_name) layer.set_name("Merged channels") new_layer_id = layer.get_id() new_layer_index = image.get_layer_index() if image.contains_layer_id(layer_id): layer.select_id(layer_id) layer_index = image.get_layer_index() layer_name = layer.get_name() layer_opacity = layer.get_opacity() image.move_layer_index(new_layer_index, layer_index + 1) layer.select_id(layer_id) layer.remove() layer.select_id(new_layer_id) layer.set_name(layer_name) layer.set_opacity(layer_opacity) image.do_end()
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") image.move_layer_index(image.get_layer_index(), new_layer_index) for cur_layer_id in reversed(channels_id): layer.select_id(cur_layer_id) image.move_layer_index(image.get_layer_index(), new_layer_index + 1) layer.merge_over() new_layer_id = layer.get_id() if image.contains_layer_id(layer_id): layer.select_id(layer_id) layer_index = image.get_layer_index() layer_name = layer.get_name() layer_opacity = layer.get_opacity() image.move_layer_index(new_layer_index, layer_index + 1) layer.select_id(layer_id)
b = Image.merge("RGB", [zero, zero, im.getchannel("B")]) image.do_begin() layer.select_id(layer_id) layer.set_visible(False) channels = [(r, "Red", "R"), (g, "Green", "G"), (b, "Blue", "B")] if layer_transparent: a = im.getchannel("A") channels.insert(0, (a, "Alpha", "A")) channels_id = [] for ch in channels: ch[0].save(temp_name, "BMP") layer.add_from_file(temp_name) layer.set_name(ch[1] + " channel") layer.set_opacity(layer_opacity) if ch[2] == "A": layer.set_blend_op(layer.BLEND_MASK) elif ch[2] != channels[-1][2]: layer.set_blend_op(layer.BLEND_LIGHTEN) layer.set_registry("split-channel", ch[2]) layer.set_registry("split-source-id", layer_id) channels_id.append(layer.get_id()) image.move_layer_index(image.get_layer_index(), layer_index+1) layer.select_id(layer_id) layer.set_registry("split-channels-id", channels_id) image.do_end()
# Mask > New mask # (fr) Masque > Nouveau masque # (es) Máscara > Máscara nueva # (de) Maske > Neue Maske from lazpaint import image, layer, tools, colors, selection, dialog translation = dialog.select_translation(en={"Mask": "Mask"}, fr={"Mask": "Masque"}, es={"Mask": "Máscara"}, de={"Mask": "Maske"}) image.do_begin() selection.deselect() layer_index = image.get_layer_index() layer.new(translation["Mask"]) mask_index = image.get_layer_index() image.move_layer_index(mask_index, layer_index + 1) layer.set_blend_op(layer.BLEND_MASK) tools.set_fore_color(colors.WHITE) tools.set_back_color(colors.BLACK) tools.choose(tools.FLOOD_FILL) tools.mouse((0, 0), [tools.STATE_LEFT]) image.do_end()