python给图片添加全屏水印(透明度/字体)

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行,如果还有办法精简,评论告诉我

python
176 views
Comments
登录后评论
Sign In