Jelajahi Sumber

generic merge channels, pillow not necessary

johann 5 tahun lalu
induk
melakukan
79658a94cb
3 mengubah file dengan 54 tambahan dan 0 penghapusan
  1. 54 0
      scripts/merge_channels.py
  2. 0 0
      scripts/test/merge_rgb.py
  3. 0 0
      scripts/test/split_rgb_pillow.py

+ 54 - 0
scripts/merge_channels.py

@@ -0,0 +1,54 @@
+# Merge channels
+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 i in range(1, image.get_layer_count()+1):
+      image.select_layer_index(i)
+      cur_layer_id = layer.get_registry("split-source-id")
+      if cur_layer_id == layer_id:
+        channels_id.insert(0, layer.get_id())   
+        if new_layer_index is None:
+          new_layer_index = i
+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)
+  layer.remove()
+  layer.select_id(new_layer_id)
+  layer.set_name(layer_name)
+  layer.set_opacity(layer_opacity)
+  
+image.do_end()

+ 0 - 0
scripts/merge_rgb.py → scripts/test/merge_rgb.py


+ 0 - 0
scripts/split_rgb_pillow.py → scripts/test/split_rgb_pillow.py