照片批量加文字水印

批量对不同格式照片文件进行加文字水印

对于jpg和png格式文件需要批量加文字水印以保证自己的知识产权,笔者写了3个python程序去处理。主要的文件都放在GitHub上可供下载,GitHub链接<------

png-png

以下是png格式到png格式的处理程序,所需要做的是创建两个文件夹,一个是输入文件夹用来存放待处理的png格式文件,一个是输出文件夹,放处理后的png格式文件。

注意python3的PIL包被Pillow替换了,注意一下。

from PIL import Image    #Pillow
from PIL import ImageFont
from PIL import ImageDraw
from time import sleep
import os

def caiImage(img_path, output_path, text,a,b,d):
    chang=a+1
    kuang=b+1
    qiandu=d
    img1 = Image.open(img_path)
    img1 = img1.convert('RGBA')
    # 新建一个和原图大小一样的水印覆盖层
    text_overlay = Image.new('RGBA', img1.size, (255, 255, 255, 0))
    # 创建一个画图对象
    image_draw = ImageDraw.Draw(text_overlay)
    # 加载字体,设置字体大小
    c = int(img1.size[0]/(12*chang))#自适应大小
    font = ImageFont.truetype('汉字之美神勇兔生肖体.ttf', c)  # ttf字体类型,别的ttf需要自己下载,c->字体大小
    # 在指定位置画上文字水印,160就是透明度
    print("高度:"+str(img1.size[0])+",宽度:"+str(img1.size[1]))

    for j in range(int(img1.size[0]/chang),int(img1.size[0]),int(img1.size[0]/chang)):
        for k in range(int(img1.size[1]/kuang),int(img1.size[1]),int(img1.size[1]/kuang)):
            image_draw.text((j,k), text, font=font, fill=(100, 100, 100, qiandu))# 水印字体RGB颜色
            img1 = Image.alpha_composite(img1, text_overlay)
    img1.save(output_path)

path = "输入" #输入文件夹目录
path2 = "输出"#输出目录
files= os.listdir(path)
i=1


for file in os.listdir(path):  # 遍历文件夹
    if '.png' in file:
        del_file = path + '/' + file
        caiImage(del_file, path2 + "/" + str(i) + ".png", 'text',3,3,10)#text->设置的字体  长有多少个水印 宽有多少个水印  不透明度(0-255)
        i=i+1


print("finish"+str(i-1)+"page")







png-jpg

from PIL import Image    #Pillow
from PIL import ImageFont
from PIL import ImageDraw
from time import sleep
import os

def caiImage(img_path, output_path, text,a,b,d):
    chang=a+1
    kuang=b+1
    qiandu=d
    img1 = Image.open(img_path)
    img1 = img1.convert('RGBA')
    # 新建一个和原图大小一样的水印覆盖层
    text_overlay = Image.new('RGBA', img1.size, (255, 255, 255, 0))
    # 创建一个画图对象
    image_draw = ImageDraw.Draw(text_overlay)
    # 加载字体,设置字体大小
    c = int(img1.size[0]/(12*chang))#自适应大小
    font = ImageFont.truetype('汉字之美神勇兔生肖体.ttf', c)  # ttf字体类型,别的ttf需要自己下载,c->字体大小
    # 在指定位置画上文字水印,160就是透明度
    print("高度:"+str(img1.size[0])+",宽度:"+str(img1.size[1]))

    for j in range(int(img1.size[0]/chang),int(img1.size[0]),int(img1.size[0]/chang)):
        for k in range(int(img1.size[1]/kuang),int(img1.size[1]),int(img1.size[1]/kuang)):
            image_draw.text((j,k), text, font=font, fill=(100, 100, 100, qiandu))# 水印字体RGB颜色
            img1 = Image.alpha_composite(img1, text_overlay)
    img1.save(output_path)

path = "输入" #输入文件夹目录
path2 = "输出"#输出目录
files= os.listdir(path)
i=1


for file in os.listdir(path):  # 遍历文件夹
    if '.png' in file:
        del_file = path + '/' + file
        caiImage(del_file, path2 + "/" + str(i) + ".png", 'text',3,3,10)#text->设置的字体  长有多少个水印 宽有多少个水印  不透明度(0-255)
        i=i+1
for file in os.listdir(path2):
    if '.png' in file:
        kaikai = path2+'/'+file
        img = Image.open(kaikai)
        #new_file = os.path.splitext(kaikai)[0] + '.jpg'
        new_file = str(kaikai)[0:-len('.png')] + '.jpg'
        img.convert('RGB').save(new_file)

for file in os.listdir(path2):
    if '.png' in file:
        os.remove(path2+'/'+file)

print("finish"+str(i-1)+"page")







jpg-jpg

from PIL import Image    #Pillow
from PIL import ImageFont
from PIL import ImageDraw
from time import sleep
import os
def changeJpgToPng(srcPath,dstPath):
    image = Image.open(srcPath)

    png_name = str(dstPath)[0:-len('.jpg')] + '.png'
    # image.save(png_name)
    # print(png_name)

    # image = image.convert('RGBA')
    image = image.convert('RGB')
    image.save(png_name)
    pass

def caiImage(img_path, output_path, text,a,b,d):
    chang=a+1
    kuang=b+1
    qiandu=d
    img1 = Image.open(img_path)
    img1 = img1.convert('RGBA')
    # 新建一个和原图大小一样的水印覆盖层
    text_overlay = Image.new('RGBA', img1.size, (255, 255, 255, 0))
    # 创建一个画图对象
    image_draw = ImageDraw.Draw(text_overlay)
    # 加载字体,设置字体大小
    c = int(img1.size[0]/(12*chang))#自适应大小
    font = ImageFont.truetype('汉字之美神勇兔生肖体.ttf', c)  # ttf字体类型,别的ttf需要自己下载,c->字体大小
    # 在指定位置画上文字水印,160就是透明度
    print("高度:"+str(img1.size[0])+",宽度:"+str(img1.size[1]))

    for j in range(int(img1.size[0]/chang),int(img1.size[0]),int(img1.size[0]/chang)):
        for k in range(int(img1.size[1]/kuang),int(img1.size[1]),int(img1.size[1]/kuang)):
            image_draw.text((j,k), text, font=font, fill=(100, 100, 100, qiandu))# 水印字体RGB颜色
            img1 = Image.alpha_composite(img1, text_overlay)
    img1.save(output_path)

path = "输入" #输入文件夹目录
path2 = "输出"#输出目录
files= os.listdir(path)
i=1
for file in files: #遍历文件夹
    if '.jpg' in file:
        e_file = path +'/' + file
        changeJpgToPng(e_file,e_file)

for file in os.listdir(path):  # 遍历文件夹
    if '.png' in file:
        del_file = path + '/' + file
        caiImage(del_file, path2 + "/" + str(i) + ".png", 'text',3,3,10)#text->设置的字体  长有多少个水印 宽有多少个水印  不透明度(0-255)
        i=i+1
for file in os.listdir(path2):
    if '.png' in file:
        kaikai = path2+'/'+file
        img = Image.open(kaikai)
        #new_file = os.path.splitext(kaikai)[0] + '.jpg'
        new_file = str(kaikai)[0:-len('.png')] + '.jpg'
        img.convert('RGB').save(new_file)
for file in os.listdir(path):
    if '.png' in file:
        os.remove(path+'/'+file)
for file in os.listdir(path2):
    if '.png' in file:
        os.remove(path2+'/'+file)

print("finish"+str(i-1)+"page")







评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端精神小伙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值