1.環境python3
2. 需要用到的模塊或包 os(內置模塊),PIL(第三方模塊,自己安裝一下)
import os
from PIL import Image, ImageFont, ImageDraw
def add_text_to_image(imgpath="../img"):
# imgpath 需要加水印的圖片位置
for parent, dirnames, filenames in os.walk(imgpath):
for filename in filenames:
fullpath = os.path.join(parent, filename)
if 'jpg' in fullpath:
# 下面這兩步是獲取圖片的名字,用於存儲圖片的時候 和原圖保持一致
image_name = os.path.split(fullpath)[1]
name = os.path.splitext(image_name)[0]
# fullpath 圖片的路徑
# 用RGBA的模式打開圖片,
im = Image.open(fullpath).convert('RGBA')
# 創建一個和原圖一樣大小的圖片
txt = Image.new('RGBA', im.size, (0, 0, 0, 0))
# 設置字體的大小 可以根據自己的需求來,我這邊是按照圖片的寬度的1/10之一當做水印文字的大小
font_size = int(txt.size[0] / 10)
# 設置字體
fnt = ImageFont.truetype("c:/Windows/Fonts/Tahoma.ttf", font_size)
# 在新建的圖片上添加字體
d = ImageDraw.Draw(txt)
# 獲取字體大小位置
text_size_x, text_size_y = d.textsize(font_txt, font=fnt)
# helloworld 水印文字
# font 指定字體
# fill 指定文字顏色和透明度
d.text(((txt.size[0] - text_size_x) / 2, (txt.size[1] - text_size_y) / 2), font_txt,
font=fnt,
fill=(255, 255, 255, 60))
# 合併兩張圖片,並確定水印的位置
out = Image.alpha_composite(im, txt)
# out.show()
# 由於我是用RGBA打開的圖片,沒有辦法直接保存jpg 但是可以保存成png,想要保存jpg 需要先裝換一個圖片格式 out.convert('RGB')
# RGBA意思是紅色,綠色,藍色,Alpha的色彩空間,Alpha指透明度。而JPG不支持透明度,所以要麼丟棄Alpha,要麼保存爲.png文件
out = out.convert('RGB')
# 保存圖片 路徑+文件名字
out.save("../img2/{}.jpg".format(name))
# 第一次處理圖片,不足之處 還望多多指教
if __name__ == '__main__':
add_text_to_image()