У меня есть фоновое изображение и изображение в оттенках серого, оба в формате PNG. Я хочу преобразовать изображение в градациях серого так, чтобы белый стал другим произвольным цветом, а «чернота» каждого пикселя стала похожей на канал альфа / прозрачности. Затем я хочу поместить его поверх фонового изображения.
У меня есть следующий код:
from PIL import Image
# load images
image = Image.open("image.png")
mask = Image.open("mask.png")
# stretch mask to fit image
mask = mask.resize(image.size)
# get the color of a pixel in the middle of the image to use as mask color
color = image.getpixel((500, 500))
# colorize the greyscale mask to that color, with the "blackness" of each pixel becoming the alpha channel
greyscale_to_color_with_alpha(mask, color)
# apply mask on top of image
image.paste(mask)
def greyscale_to_color_with_alpha(image, color):
raise NotImplementedError
PIL помечен, потому что это то, что я использую в настоящее время, но отвечает с использованием других библиотек изображений также приветствуются.