merge_channels.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # Merge channels
  2. from lazpaint import image, dialog, layer
  3. channels_id = None
  4. new_layer_index = None
  5. image.do_begin()
  6. if layer.get_registry("split-channel") is not None:
  7. layer_id = layer.get_registry("split-source-id")
  8. if image.contains_layer_id(layer_id):
  9. layer.select_id(layer_id)
  10. channels_id = layer.get_registry("split-channels-id")
  11. new_layer_index = image.get_layer_index() + 1
  12. else:
  13. channels_id = []
  14. for i in range(1, image.get_layer_count()+1):
  15. image.select_layer_index(i)
  16. cur_layer_id = layer.get_registry("split-source-id")
  17. if cur_layer_id == layer_id:
  18. channels_id.insert(0, layer.get_id())
  19. if new_layer_index is None:
  20. new_layer_index = i
  21. else:
  22. layer_id = layer.get_id()
  23. channels_id = layer.get_registry("split-channels-id")
  24. new_layer_index = image.get_layer_index() + 1
  25. if channels_id is None:
  26. dialog.show_message("Current layer is not split")
  27. exit()
  28. layer.new("Merged channels")
  29. image.move_layer_index(image.get_layer_index(), new_layer_index)
  30. for cur_layer_id in reversed(channels_id):
  31. layer.select_id(cur_layer_id)
  32. image.move_layer_index(image.get_layer_index(), new_layer_index+1)
  33. layer.merge_over()
  34. new_layer_id = layer.get_id()
  35. if image.contains_layer_id(layer_id):
  36. layer.select_id(layer_id)
  37. layer_index = image.get_layer_index()
  38. layer_name = layer.get_name()
  39. layer_opacity = layer.get_opacity()
  40. image.move_layer_index(new_layer_index, layer_index+1)
  41. layer.select_id(layer_id)
  42. layer.remove()
  43. layer.select_id(new_layer_id)
  44. layer.set_name(layer_name)
  45. layer.set_opacity(layer_opacity)
  46. image.do_end()