程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python給圖片添加全屏水印(透明度/字體)

編輯:Python
import os,math
from PIL import Image,ImageFont,ImageDraw,ImageEnhance,ImageOps
def gen_mark():
# 生成mark圖片,返回添加水印的函數,字體寬度、高度
size10,mark10=50,'我是水印'
# 創建水印圖片(寬度、高度)
mark=Image.new(mode='RGBA',size=(len(mark10)*size10,round(size10*1.2)))
# 生成文字,透明度0.5(50%),#6e6e6e是水印的顏色
# 'C:/Windows/Fonts/msyhbd'為微軟雅黑的粗體
ImageDraw.Draw(mark).text(xy=(0,0),text=mark10,fill='#6e6e6e',font=ImageFont.truetype('C:/Windows/Fonts/msyhbd',size10))
mark.putalpha(ImageEnhance.Brightness(mark.split()[3]).enhance(float(0.5)))
def mark_im(im):
# 在im圖片上添加水印 im為打開的原圖,計算斜邊長度
c=int(math.sqrt(im.size[0]*im.size[0]+im.size[1]*im.size[1]))
# 以斜邊長度為寬高創建大圖(旋轉後大圖才足以覆蓋原圖)
mark2 = Image.new(mode='RGBA',size=(c,c))
# 在大圖上生成水印文字,此處mark為上面生成的水印圖片
y,idx,space10=0,0,75
while y < c:
# 制造x坐標錯位
x = -int((mark.size[0] + space10) * 0.5 * idx)
idx = (idx + 1) % 2
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 name in os.listdir('./ppppp'):gen_mark()(ImageOps.exif_transpose(Image.open(os.path.join('./ppppp',name)))).convert('RGB').save(os.path.join('./',os.path.basename(os.path.join('./ppppp',name))),quality=80)
# './ppppp'為圖片輸入路徑(文件夾),'./'為輸出路徑

寫的可能不是最簡形式的,如果大家有辦法再精簡,可以評論告訴我


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved