枕头:如何将图像粘贴到另一个图像上?

时间:2019-04-26 12:49:39

标签: python python-3.x python-imaging-library

我正在编写一个脚本,该脚本自动为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 :(得分:0)

由于某种原因,您的logo.png可能会加载为带有alpha的灰度,因此我将其拆分为以下组成部分:

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

然后粘贴并保存如下:

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