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_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")

处理多个目录下的 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

相关推荐: Debian/Ubuntu禁止内核自动更新升级

云筏的KVM系列服务器目前只支持默认版本的Linux内核,更换其他版本的内核可能会出现不兼容的情况,然后IO以及网络速度会变得特别慢。这个问题在产品文档中有专门说明,一般用户不要更新内核就没有问题了,如果用户有能力选择内核的话升级内核到特定版本也是可以正常使用…

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论