17行代码python给图片添加全屏水印(透明度/字体)
import glob,os,math
from PIL import Image,ImageFont,ImageDraw,ImageEnhance,ImageOps
def gen(im):
mark=Image.new('RGBA',(len('我是水印')*50,round(50*1.2))) #生成文字,透明度
ImageDraw.Draw(mark).text((0,0),'我是水印','#6e6e6e',ImageFont.truetype('C:/Windows/Fonts/msyhbd',50))
mark.putalpha(ImageEnhance.Brightness(mark.split()[3]).enhance(0.5))
c=int(math.sqrt(im.size[0]**2+im.size[1]**2)) #以斜边长度为宽高创建大图(旋转后大图才足以覆盖原图)
y,idx,mark2=0,0,Image.new('RGBA',(c,c))
while y<c: #制造x坐标错位
x,idx=-int((mark.size[0]+75)*0.5*idx),(idx+1)%2
while x<c: #在该位置粘贴mark水印图片
mark2.paste(mark,(x,y))
x=x+mark.size[0]+75
y=y+mark.size[1]+75 #将大图旋转一定角度,并在原图上添加大图水印
im.paste(mark2.rotate(30),(int((im.size[0]-c)/2),int((im.size[1]-c)/2)),mark2.rotate(30))
return im
for n in glob.glob('./ppppp/*'):gen(ImageOps.exif_transpose(Image.open(n))).save('.\\'+os.path.basename(n)),os.remove(n)
from PIL import Image,ImageFont,ImageDraw,ImageEnhance,ImageOps
def gen(im):
mark=Image.new('RGBA',(len('我是水印')*50,round(50*1.2))) #生成文字,透明度
ImageDraw.Draw(mark).text((0,0),'我是水印','#6e6e6e',ImageFont.truetype('C:/Windows/Fonts/msyhbd',50))
mark.putalpha(ImageEnhance.Brightness(mark.split()[3]).enhance(0.5))
c=int(math.sqrt(im.size[0]**2+im.size[1]**2)) #以斜边长度为宽高创建大图(旋转后大图才足以覆盖原图)
y,idx,mark2=0,0,Image.new('RGBA',(c,c))
while y<c: #制造x坐标错位
x,idx=-int((mark.size[0]+75)*0.5*idx),(idx+1)%2
while x<c: #在该位置粘贴mark水印图片
mark2.paste(mark,(x,y))
x=x+mark.size[0]+75
y=y+mark.size[1]+75 #将大图旋转一定角度,并在原图上添加大图水印
im.paste(mark2.rotate(30),(int((im.size[0]-c)/2),int((im.size[1]-c)/2)),mark2.rotate(30))
return im
for n in glob.glob('./ppppp/*'):gen(ImageOps.exif_transpose(Image.open(n))).save('.\\'+os.path.basename(n)),os.remove(n)
评论