Python 给图片批量加logo+logo透明化

利用Python 给图片批量加logo+logo透明化

通过图片上新建图层 把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

你可能感兴趣的:(python)