maximkv25
@maximkv25
web-developer

Как вставить изображение в изображение используя Pillow?

Всем привет, есть обширная задача по коллажу фоток, на данный момент не получается вставить одно фото в другое
from PIL import Image

im = Image.open('lenna.png')
au = Image.open('audi.png')

Следующая работа в отладчике
(Pdb) !im.mode
'RGB'
(Pdb) !au.mode
'RGBA'
(Pdb) !k = au.convert(mode='RGB')
(Pdb) !k.mode
'RGB'
(Pdb) !im.paste(k, (0,0,100,100))
*** ValueError: images do not match
(Pdb)

Ошибка должна не возникать, если одинаковые изображения, как видите я конвертировал вставляемое фото, как с этим быть?
  • Вопрос задан
  • 2623 просмотра
Решения вопроса 1
maximkv25
@maximkv25 Автор вопроса
web-developer
Из серии сам задал, сам ответил
!im.paste(au, (0,0))
Не совсем верно сначала понял документацию
Размеры изображения должны совпадать, в противном случаи аргумент "BOX" нужно задавать явно
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@NaName
from PIL import Image
import glob

foreground_name = 'BFB_Logo.png'
foreground = Image.open(foreground_name)
foreground = foreground.convert('RGBA')

for file_name in glob.glob('*.jpg'):
    print (file_name)
    background_name = file_name
    background = Image.open(background_name)

    x = int((background.size[0] / 2) - (foreground.size[0] / 2))
    y = int((background.size[1] / 2) - (foreground.size[1] / 2))

    background = background.convert('RGBA')
    background.paste(foreground, (x, y), mask = foreground)
    background.save('__' + background_name.split('.')[0] + '.jpg','JPEG')

print('Gotovo bla-a')


я таким пользовался для вставки в центр.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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