Подушка: Как я могу вставить изображение на другое изображение? - PullRequest
0 голосов
/ 26 апреля 2019

Я пишу скрипт, который автоматически создает изображение цитаты для Instagram.Поэтому я хочу поставить журнал (logo.png) на заднем плане.

Если я запускаю свой код, я получаю эту ошибку:

$ python main.py
Traceback (most recent call last):
  File "main.py", line 17, in <module>
    imgbg = bg.paste(logo, (0,0,0,0))
  File "C:\Users\bukto\AppData\Local\Programs\Python\Python36-32\lib\site-packages\PIL\Image.py", line 1459, in paste
    self.im.paste(im, box)
ValueError: images do not match

Вот мой код:

#imports
from PIL import Image
import random

###Generate a Color###

#a list of rgb color codes
colors = [(26, 188, 156),(46, 204, 113),(39, 174, 96),(22, 160, 133),(52, 152, 219),(41, 128, 185),(155, 89, 182),(142, 68, 173),(52, 73, 94),(44, 62, 80),(230, 126, 34),(211, 84, 0),(231, 76, 60),(192, 57, 43)]

bg = Image.new('RGB', (800, 800), random.choice(colors)) #choose a random number out of the list


#add Logo

logo = Image.open("logo.png")

imgbg = bg.paste(logo, (0,0,0,0))

imgbg.save("./img/test.png")

Я ожидаю, что логотип находится слева вверху.

Если вы хотите проверить это сами, вот ветка git: https://github.com/koehlertimo/QuoteMaker/tree/stackoverflow

Спасибо за вашу поддержку,

Тимо Келер

1 Ответ

0 голосов
/ 26 апреля 2019

Ваш logo.png, кажется, по какой-то причине загружается в оттенках серого с альфой, поэтому я разделил его на составные части с помощью:

logo = Image.open("logo.png") 
Grey, Alpha = logo.split()

Затем вы вставляете и сохраняете так:

bg.paste(logo, (0,0), Alpha) 
bg.save('result.png')     
...