1# Channels > Split RGB 2# (fr) Canaux > Séparer RVB 3# (es) Canales > Dividir RGB 4# (de) Kanäle > RVB teilen 5from lazpaint import image, dialog, layer, filters 6 7translation = dialog.select_translation( 8 en = {"Layer already split": "Layer already split", "Alpha": "Alpha", "Red": "Red", "Green": "Green", "Blue": "Blue"}, 9 fr = {"Layer already split": "Le calque est déjà séparé", "Alpha": "Alpha", "Red": "Rouge", "Green": "Vert", "Blue": "Bleu"}, 10 es = {"Layer already split": "La capa ya está dividida", "Alpha": "Alpha", "Red": "Rojo", "Green": "Verde", "Blue": "Azul"}, 11 de = {"Layer already split": "Die Ebene ist bereits geteilt", "Alpha": "Alpha", "Red": "Rot", "Green": "Grün", "Blue": "Blau"} 12 ) 13 14# check if it is a channel 15if layer.get_registry("split-channel") is not None: 16 dialog.show_message(translation["Layer already split"]) 17 exit() 18 19layer_id = layer.get_id() 20layer_index = image.get_layer_index() 21layer_opacity = layer.get_opacity() 22layer_transparent = layer.is_transparent() 23 24# check if it has been split 25if layer.get_registry("split-channels-id") is not None: 26 for cur_layer_id in image.iterate_layers(): 27 if layer.get_registry("split-source-id") == layer_id: 28 dialog.show_message(translation["Layer already split"]) 29 exit() 30 31image.do_begin() 32channels = [] 33if layer_transparent: 34 channels.append({"name": "Alpha", "channel": "A", "red": "alpha", "green": "alpha", "blue": "alpha", "alpha": "255"}) 35channels.append({"name": "Red", "channel": "R", "red": "red", "green": "0", "blue": "0", "alpha": "255"}) 36channels.append({"name": "Green", "channel": "G", "red": "0", "green": "green", "blue": "0", "alpha": "255"}) 37channels.append({"name": "Blue", "channel": "B", "red": "0", "green": "0", "blue": "blue", "alpha": "255"}) 38 39channels_id = [] 40for ch in channels: 41 layer.select_id(layer_id) 42 layer.duplicate() 43 filters.filter_function(red = ch["red"], green = ch["green"], blue = ch["blue"], alpha = ch["alpha"], gamma_correction = False) 44 layer.set_name(translation[ch["name"]]) 45 layer.set_opacity(layer_opacity) 46 if ch["channel"] == "A": 47 layer.set_blend_op(layer.BLEND_MASK) 48 elif ch != channels[-1]: 49 layer.set_blend_op(layer.BLEND_LIGHTEN) 50 layer.set_registry("split-channel", ch["channel"]) 51 layer.set_registry("split-source-id", layer_id) 52 channels_id.append(layer.get_id()) 53 54layer.select_id(layer_id) 55layer.set_registry("split-channels-id", channels_id) 56layer.set_visible(False) 57image.do_end() 58