Как создать изображение с альфа-каналом поверх другого изображения (RGB, без альфа-канала)? Использование Python PIL

Также убедитесь, что вы не завертываете круглые скобки вокруг строки запроса следующим образом:

SELECT Name from [USER] WHERE [UserId] in (@ids)

У меня возникла ошибка SQL-синтаксиса с использованием Dapper 1.50.2, исправленная путем удаления круглых скобок

SELECT Name from [USER] WHERE [UserId] in @ids
0
задан salmon 18 January 2019 в 07:09
поделиться

2 ответа

Я решил свою проблему самостоятельно, проблема в том, что значение альфа-канала в изображении RGBA равно 0 или 255, я просто меняю 255 на 220, чтобы верхнее изображение не закрывало нижнее изображение. Мой код выглядит следующим образом:

def transPNG(srcImageName, dstImageName):
img = Image.open(srcImageName)
img = img.convert("RGBA")
datas = img.getdata()
newData = list()
for item in datas:
    if item[0] > 200 and item[1] > 200 and item[2] > 200:
        newData.append(( 255, 255, 255, 0))
    else:
        newData.append((item[0], item[1], item[2], randint(220, 220)))
img.putdata(newData)
img.save(dstImageName,"PNG")
0
ответ дан salmon 18 January 2019 в 07:09
поделиться

Просто расширите свое изображение RGB до RGBA, установив для A значение «1»:

rgba = np.dstack((rgb, np.ones(rgb.shape[:-1])))

, а затем используйте упомянутый вами метод композиции.

Если вы используете Подушку , вместо этого вы можете просто использовать:

imRGB.putalpha(alpha)
composite = PIL.Image.alpha_composite(imRGB, im2RGBA)
0
ответ дан Mailerdaimon 18 January 2019 в 07:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: