import glob,os,math
from PIL import Image,ImageFont,ImageDraw,ImageEnhance,ImageOps
def gen_mark():
size10,mark10=50,'我是水印' # 创建水印图片(宽度、高度)
mark=Image.new('RGBA',(len(mark10)*size10,round(size10*1.2)))
# 生成文字,透明度
ImageDraw.Draw(mark).text((0,0),mark10,'#6e6e6e',ImageFont.truetype('C:/Windows/Fonts/msyhbd',size10))
mark.putalpha(ImageEnhance.Brightness(mark.split()[3]).enhance(float(0.5)))
def mark_im(im):
c=int(math.sqrt(im.size[0]**2+im.size[1]**2))
# 以斜边长度为宽高创建大图(旋转后大图才足以覆盖原图)
mark2=Image.new('RGBA',(c,c))
y,idx,space10=0,0,75
while y<c: # 制造x坐标错位
x=-int((mark.size[0]+space10)*0.5*idx)
while x<c: # 在该位置粘贴mark水印图片
mark2.paste(mark,(x,y))
x=x+mark.size[0]+space10
y=y+mark.size[1]+space10
# 将大图旋转一定角度
mark2=mark2.rotate(30)
# 在原图上添加大图水印
im.paste(mark2,(int((im.size[0]-c)/2),int((im.size[1]-c)/2)),mark2.split()[3])
del mark2
return im
return mark_im
for n in glob.glob('./ppppp/*'):gen_mark()(ImageOps.exif_transpose(Image.open(n))).save('.\\'+os.path.basename(n)),os.remove(n)
这里ppppp为桌面上的一个文件夹,这个python文件应放置在桌面(与文件夹同路径),当然用绝对路径也可以的
上一个版本的改进版,精简到了27行,如果还有办法精简,评论告诉我