通过图片上新建图层 把logo水印图片添加到图层 并合并
from PIL import ImageDraw
from PIL import Image
#图片透明化
def trans_PNG(initial_pic, new_pic):
'''
to get a transparent picture
:param initial_pic: initial picture's path
:param new_pic: the transparent picture's path
:return:
'''
img = Image.open(initial_pic)
#将图片转换为四通道,而第四个通道是我们要修改的透明度,
#值可以设置成0-255之间的值,透明度会不太一样,看脑洞有多大咯。
img = img.convert("RGBA")
x, y = img.size
for i in range(x):
for j in range(y):
#取四个通道的值,然后用切片取前三个不变,最后一个改为240
color = img.getpixel((i, j))
color = color[:-1] + (240,)
img.putpixel((i, j), color)
#将白色及近似白色的地方改成半透明
datas = img.getdata()
new_data = list()
for item in datas:
if item[0] > 220 and item[1] > 220 and item[2] > 220:
new_data.append((255, 255, 255, 100))
else:
new_data.append(item)
img.putdata(new_data)
img.save(new_pic, "PNG")
return new_pic
trans_PNG("logo.png", "image.png")
#trans_PNG("logo文件名","生成透明化logo文件名")
i = 1
while i <247: #图片张数
im = Image.open(str(i)+'.jpg') # 批量打开图片,图片命名为1-n.jpg
im1= Image.open('image.png') # 打开水印图片
position = (0,0) # 默认设定水印位置为左上角
layer = Image.new('RGBA', im.size) # 新建一个图层
layer.paste(im1, position) # 将水印图片添加到图层上
im2= Image.composite(layer, im, layer)#合并图片
im2.save('./logopic/'+str(i)+'.jpg') #保存图片——保存路径+保存文件名
print('已保存图片./logopic/'+str(i)+'.jpg')
i+=1
图片透明化代码参考
https://cloud.tencent.com/developer/article/1487868