1# Channels > Split CMYK 2# (fr) Canaux > Séparer CMJN 3# (es) Canales > Dividir CMYK 4# (de) Kanäle > CMYK teilen 5from lazpaint import image, dialog, layer, filters 6 7translation = dialog.select_translation( 8 en = {"Layer already split": "Layer already split", "Cyan": "Cyan", "Magenta": "Magenta", "Yellow": "Yellow", "Black": "Black", "Alpha": "Alpha"}, 9 fr = {"Layer already split": "Le calque est déjà séparé", "Cyan": "Cyan", "Magenta": "Magenta", "Yellow": "Jaune", "Black": "Noir", "Alpha": "Alpha"}, 10 es = {"Layer already split": "La capa ya está dividida", "Cyan": "Cian", "Magenta": "Magenta", "Yellow": "Amarillo", "Black": "Negro", "Alpha": "Alpha"}, 11 de = {"Layer already split": "Die Ebene ist bereits geteilt", "Cyan": "Cyan", "Magenta": "Magenta", "Yellow": "Gelb", "Black": "Schwartz", "Alpha": "Alpha"} 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() 23cmy_id = None 24black_id = None 25 26# check if it has been split 27if layer.get_registry("split-channels-id") is not None: 28 for cur_layer_id in image.iterate_layers(): 29 if layer.get_registry("split-source-id") == layer_id: 30 dialog.show_message(translation["Layer already split"]) 31 exit() 32 33image.do_begin() 34channels = [] 35if layer_transparent: 36 channels.append({"name": "Alpha", "channel": "A", "red": "alpha", "green": "alpha", "blue": "alpha", "alpha": "255"}) 37channels.append({"name": "Black", "channel": "K", "red":"max(max(red,green),blue)", "green": "max(max(red,green),blue)", "blue": "max(max(red,green),blue)", "alpha": "255"}) 38#channels.append({"name": "Black", "channel": "K", "hue":"0", "saturation": "0", "lightness": "max(max(red,green),blue)", "alpha": "255"}) 39 40channels_id = [] 41for ch in channels: 42 layer.select_id(layer_id) 43 layer.duplicate() 44 filters.filter_function(red = ch.get("red"), green = ch.get("green"), blue = ch.get("blue"), hue = ch.get("hue"), saturation = ch.get("saturation"), lightness = ch.get("lightness"), alpha = ch["alpha"], gamma_correction = False, corrected_hue = False) 45 layer.set_name(translation[ch["name"]]) 46 layer.set_opacity(layer_opacity) 47 if ch["channel"] == "A": 48 layer.set_blend_op(layer.BLEND_MASK) 49 layer.set_registry("split-channel", ch["channel"]) 50 layer.set_registry("split-source-id", layer_id) 51 if ch["channel"] == "K": 52 black_id = layer.get_id() 53 layer.duplicate() 54 layer.set_blend_op(layer.BLEND_DIVIDE) 55 black_div_id = layer.get_id() 56 layer.select_id(layer_id) 57 layer.duplicate() 58 copy_index = image.get_layer_index() 59 image.move_layer_index(copy_index, copy_index + 1) 60 image.select_layer_index(copy_index + 2) 61 layer.merge_over() 62 cmy_id = layer.get_id() 63 else: 64 channels_id.append(layer.get_id()) 65 66if cmy_id is not None: 67 channels = [] 68 channels.append({"name": "Cyan", "channel": "C", "red": "red", "green": "1", "blue": "1", "alpha": "255"}) 69 channels.append({"name": "Magenta", "channel": "M", "red": "1", "green": "green", "blue": "1", "alpha": "255"}) 70 channels.append({"name": "Yellow", "channel": "Y", "red": "1", "green": "1", "blue": "blue", "alpha": "255"}) 71 channels[-1]["last"] = True 72 for ch in channels: 73 layer.select_id(cmy_id) 74 if ch.get("last") is None: 75 layer.duplicate() 76 filters.filter_function(red = ch.get("red"), green = ch.get("green"), blue = ch.get("blue"), alpha = ch["alpha"], gamma_correction = False) 77 layer.set_name(translation[ch["name"]]) 78 layer.set_opacity(layer_opacity) 79 layer.set_blend_op(layer.BLEND_MULTIPLY) 80 layer.set_registry("split-channel", ch["channel"]) 81 layer.set_registry("split-source-id", layer_id) 82 channels_id.append(layer.get_id()) 83 84if black_id is not None: 85 channels_id.append(black_id) 86 87layer.select_id(layer_id) 88layer.set_registry("split-channels-id", channels_id) 89layer.set_visible(False) 90image.do_end() 91