蘭雅sRGB 个人笔记 https://262235.xyz
提供编程和电脑应用视频教程,工具和源代码
C, C++, Python Programming, Source Code, Video

旧Hexo博客 | Github | IP定位WebAPI | Docker Hub
编程中文文档 | 网盘分享 | 中文Linux命令

Python批量给图库添加水印-更新后能随机四角

png.jpg
我们先准备一张PNG图片,在PS里调整下大小和透明度,使用下面脚本可以把PNG图叠加到一张JPG图上,然后保存图片查看水印是否合适。

# JPG叠加PNG透明图片
from PIL import Image, 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()

mark.png
11.jpg

怎么能批量处理很多图片文件能,就要用到 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 import Image, ImageDraw, ImageFont, ImageGrab
import 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 import Image, ImageDraw, ImageFont, ImageGrab
import 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

本原创文章自由转载,转载请注明本博来源及网址 | 当前页面:蘭雅sRGB 个人笔记 » Python批量给图库添加水印-更新后能随机四角