-
Notifications
You must be signed in to change notification settings - Fork 0
/
addWaterMark.py
40 lines (34 loc) · 1.49 KB
/
addWaterMark.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import os,traceback
from PIL import Image
# 获取文件夹图片,并给每个图片添加水印
def get_folder(fpath, wm_file, whiteBlock, save_path):
try:
img_suffix_list = ['png', 'jpg', 'bmp']
for i in os.listdir(fpath):
if i.split('.')[-1] in img_suffix_list:
img_path = fpath + '/' + i
img_water_mark(img_path,wm_file, whiteBlock,save_path)
except Exception as e:
print(traceback.print_exc())
# 图片添加水印
def img_water_mark(img_file, waterMark, save_path):
try:
img = Image.open(img_file) # 打开图片
watermark = Image.open(waterMark) # 打开水印
img_size = img.size
wm_size = watermark.size
# 如果图片大小小于水印大小
if img_size[0] < wm_size[0]:
watermark.resize(tuple(map(lambda x: int(x * 0.5), watermark.size)))
print('图片大小:', img_size)
position = (img_size[0]-wm_size[0],img_size[1]-wm_size[1]) # 默认设定水印位置为右下角
layer = Image.new('RGBA', img.size) # 新建一个图层
layer.paste(watermark, position) # 将水印图片添加到图层上
mark_img = Image.composite(layer, img, layer)
new_file_name = '/new_'+img_file.split('/')[-1]
mark_img.save(save_path + new_file_name)
except Exception as e:
print(traceback.print_exc())
#测试用
if __name__ == '__main__':
img_water_mark(r"test/test.jpg", r"waterMark/waterMark", "test")