python實現添加文字水印到圖片中間

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()
    

原圖
加水印後

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章