Маска не останется после преобразования изображения - PullRequest
0 голосов
/ 28 июня 2019

У меня проблемы с маскировкой изображения в формате .png и последующим преобразованием этого изображения в RGB. Я делаю это, чтобы сделать эффект маски более заметным на белом фоне.

Я сделал метод .convert('RGB') перед сохранением и вставкой маскированного изображения на только что созданное белое изображение. Оба не влияют на исходное изображение:

from PIL import Image
import os

path = os.path.dirname(os.path.realpath(__file__)) + '/'

mask = Image.open(path + "snap_mask.png")
mask = mask.convert("L")
im = Image.open(path + "snap.png")
im.putalpha(mask)

im.convert('RGB').save(path + "snap_output.png")

Начальное изображение и конечный результат в итоге совпадают. Вот ссылки на изображения, которые я использую (для диска-бота):

snap.png (правая сторона изображения серого цвета, поэтому можно увидеть эффект частиц)

snap_mask.png

snap_output.png

desired_output (вывод я хочу)

Любая помощь будет принята с благодарностью! : -)

1 Ответ

0 голосов
/ 28 июня 2019

Так что после короткого перерыва я понял, что делаю не так.Вместо преобразования изображения в RGB я прибегнул к добавлению белого изображения за маской.Раньше я неправильно выполнял метод .paste() и смог получить желаемый конечный результат:

from PIL import Image
import os

path = os.path.dirname(os.path.realpath(__file__)) + '/'

mask = Image.open(path + "snap_mask.png")
mask = mask.convert("L")
dst_im = Image.open(path + "snap.png")
dst_im.putalpha(mask)

white = Image.new('RGB', dst_im.size, (255, 255, 255))
white.paste(dst_im, dst_im)

white.save(path + "snap_output.png")
...