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_sRGBDSC_5007.JPG
    ...
    FontName:E:/flashair_sRGBDSC_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.lyvba.com/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  \r
    No.101/*.jpg  \r
    No.102/*.jpg  \r
    No.103/*.jpg  \r
    No.104/*.jpg  \r
    No.105/*.jpg  \r
    No.106/*.jpg  \r
    No.107/*.jpg  \r
    No.108/*.jpg  \r
    No.109/*.jpg  \r
    No.110/*.jpg  \r
    No.111/*.jpg  \r
    No.112/*.jpg  \r
    No.113/*.jpg  \r
    No.114/*.jpg  \r
    No.115/*.jpg  \r
    No.116/*.jpg

分类: 默认分类

0 条评论

发表回复

Avatar placeholder

您的邮箱地址不会被公开。 必填项已用 * 标注