Python批量给图库图片添加水印四角随机

使用python给照片批量添加水印,可以四个角随机方式添加
1,首先准备一个水印图片watermark,格式为.PNG的文件,使用下面脚本可以把PNG图叠加到一张JPG图上,然后保存图片查看水印是否合适。
# JPG叠加PNG透明图片from PIL importImage,ImageDraw,ImageFont,ImageGrab

mark =Image.open("262235.png").convert('RGBA')

im =Image.open("th.jpg")# 水印粘贴坐标: 左上角x,y,右下角x,y
box =( im.width - mark.width,  im.height -  mark.height   , im.width , im.height)# 粘贴操作,可理解为往 box 中放东西# 注意这里 paste 函数的第3个参数,是alpha通道# 传入含有alphat通道的图片,会自动采用该图片的alpha通道# 简单说,就是PNG透明会生效。具体看文档
im.paste(mark, box , mark )

im.save("test_web_high.jpg", quality="web_high")# im.show()
怎么能批量处理很多图片文件能,就要用到 glob.glob 函数了
glob.glob 函数功能:匹配所有的符合条件的文件,并将其以list的形式返回
import sys, glob

files =[]for f in sys.argv[1:]:
    files = files + glob.glob(f)for f in files:print("FontName: "+ f)
测试命令输出效果
$ python3 test.py  *.jpg  E:/flashair_sRGB/*.jpg
FontName:test_web_high.jpg
FontName:th.jpg
FontName:E:/flashair_sRGB\DSC_5007.JPG
...
FontName:E:/flashair_sRGB\DSC_5214.JPG
把上面2个测试脚本组合到一起,批量添加水印的脚本就完成了
# JPG叠加PNG透明图片from PIL importImage,ImageDraw,ImageFont,ImageGrabimport sys, glob

files =[]for f in sys.argv[1:]:
    files = files + glob.glob(f)# 脚本指定做水印的PNG图
mark =Image.open("262235.png").convert('RGBA')for f in files:
    im =Image.open(f)# 水印粘贴坐标: 左上角x,y,右下角x,y
    box =( im.width - mark.width,  im.height -  mark.height   , im.width , im.height)# 注意这里 paste 函数的第3个参数,是alpha通道
    im.paste(mark, box , mark )
    
    im.save(f, quality="web_high")print("FontName: "+ f +"   ....OK")
Python批量给图库添加水印随机四角,可以对一张图片,多次随机加水印,能分布到四角
#  详细说明网址  https://www.262235.xyz/index.php/archives/315/# JPG叠加PNG透明图片from PIL importImage,ImageDraw,ImageFont,ImageGrabimport sys, glob, random

def getbox(mark, im, n):if n ==0:# 水印左上
        box =(0,0, mark.width, mark.height)if n ==1:# 水印左下
        box =(0, im.height - mark.height, mark.width, im.height)if n ==2:# 水印右上
        box =(im.width - mark.width,0, im.width, mark.height)if n ==3:# 水印右下
        box =(im.width - mark.width, im.height - mark.height, im.width, im.height)return box

files =[]for f in sys.argv[1:]:
    files = files + glob.glob(f)# 脚本指定做水印的PNG图
mark =Image.open("262235.png").convert('RGBA')for f in files:
    im =Image.open(f)# 水印粘贴坐标: 左上角x,y,右下角x,y
    box = getbox(mark , im , random.randint(0,1000)%4)# 注意这里 paste 函数的第3个参数,是alpha通道
    im.paste(mark, box, mark)

    im.save(f, quality="web_high")print("FontName: "+ f +"   ....OK")
处理多个目录下的 JPEG 文件
先用 ls -1 得到目录表,然后加上 /*.jpg \,再按下面样式整理好
python3 mark.py  \
No.101/*.jpg  \
No.102/*.jpg  \
No.103/*.jpg  \
No.104/*.jpg  \
No.105/*.jpg  \
No.106/*.jpg  \
No.107/*.jpg  \
No.108/*.jpg  \
No.109/*.jpg  \
No.110/*.jpg  \
No.111/*.jpg  \
No.112/*.jpg  \
No.113/*.jpg  \
No.114/*.jpg  \
No.115/*.jpg  \
No.116/*.jpg