Hi @njamster, I appreciate your help!
In the end I was able to get it and this is the final code I got:
func _ready():
var puzzle_image = image_to_puzzle.get_image()
var mask_image: Image = load("res://components/algorithms/jigsaw_puzzle/assets/pieces/puzzle_shape.svg").get_image()
puzzle_image.decompress()
puzzle_image.convert(mask_image.get_format())
var puzzle_shape_image = Image.create(mask_image.get_width(), mask_image.get_height(), false, mask_image.get_format())
puzzle_shape_image.fill(Color.TRANSPARENT)
puzzle_shape_image.blit_rect_mask(
puzzle_image.get_region(Rect2i(Vector2i.ZERO, mask_image.get_size())), # Trozo de imagen original misma size que la mask (pieza de puzzle)
mask_image,
Rect2i(Vector2i.ZERO, mask_image.get_size()),
Vector2i.ZERO
)
### TEST PURPOSES
var sprite = Sprite2D.new()
sprite.texture = ImageTexture.create_from_image(puzzle_shape_image)
sprite.position = get_viewport().size / 2
sprite.scale *= 0.5
add_child(sprite)