channels_merge.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. # Channels > Merge
  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 cur_layer_id in image.iterate_layers():
  15. cur_source_id = layer.get_registry("split-source-id")
  16. if cur_source_id == layer_id:
  17. channels_id.insert(0, cur_layer_id)
  18. if new_layer_index is None:
  19. new_layer_index = image.get_layer_index()
  20. else:
  21. layer_id = layer.get_id()
  22. channels_id = layer.get_registry("split-channels-id")
  23. new_layer_index = image.get_layer_index() + 1
  24. if channels_id is None:
  25. dialog.show_message("Current layer is not split")
  26. exit()
  27. layer.new("Merged channels")
  28. image.move_layer_index(image.get_layer_index(), new_layer_index)
  29. for cur_layer_id in reversed(channels_id):
  30. layer.select_id(cur_layer_id)
  31. image.move_layer_index(image.get_layer_index(), new_layer_index+1)
  32. layer.merge_over()
  33. new_layer_id = layer.get_id()
  34. if image.contains_layer_id(layer_id):
  35. layer.select_id(layer_id)
  36. layer_index = image.get_layer_index()
  37. layer_name = layer.get_name()
  38. layer_opacity = layer.get_opacity()
  39. image.move_layer_index(new_layer_index, layer_index+1)
  40. layer.select_id(layer_id)
  41. layer.remove()
  42. layer.select_id(new_layer_id)
  43. layer.set_name(layer_name)
  44. layer.set_opacity(layer_opacity)
  45. image.do_end()