Ты можешь использовать OpenCV для таких задач. Это мощный инструмент для работы с изображениями.
Программный код:
import cv2
import numpy as np
# Загрузка изображений
base_image = cv2.imread('base_image.jpg')
insert_image = cv2.imread('insert_image.png', -1)
# Указание позиции
x, y = 50, 50
# Определение размеров вставляемого изображения
h, w = insert_image.shape[0], insert_image.shape[1]
# Создание маски
mask = insert_image[:, :, 3]
mask_inv = cv2.bitwise_not(mask)
insert_image = insert_image[:, :, 0:3]
# Область интереса
roi = base_image[y:y+h, x:x+w]
# Черная маска для области интереса
img1_bg = cv2.bitwise_and(roi, roi, mask = mask_inv)
# Извлечение только вставляемой области изображения
img2_fg = cv2.bitwise_and(insert_image, insert_image, mask = mask)
# Накладывание изображений
dst = cv2.add(img1_bg, img2_fg)
base_image[y:y+h, x:x+w] = dst
# Сохранение конечного изображения
cv2.imwrite('result_image.jpg', base_image)