python3使用PIL新增中文文字水印背景

2023-07-05 06:00:39
環境:Windows10_x64 
Python版本 :3.9.2
Pillow版本:9.1.1
 
寫的部落格文章被轉載且不註明出處的情況時有發生,甚至有部分轉載者將文章配圖新增自己的水印!為了保護作者勞動成果,新增水印是一個可選項。
今天記錄下Windows10環境下使用python3.9簡單實現批次新增中文文字水印背景的過程,並提供範例程式碼及相關資源下載,可從如下渠道獲取:
關注微信公眾號(聊聊博文,文末可掃碼)後回覆 20230704 獲取。 

一、背景描述

python的PIL庫可進行圖片處理,十分強大,可使用該庫實現圖片新增水印背景的需求。
可通過pip進行安裝(預設安裝最新版),命令如下:
pip install Pillow 

pypi地址: https://pypi.org/project/Pillow/

二、具體實現

這裡列舉下實現文字水印背景的關鍵點。

1、生成文字背景

可通過ImageDraw.text實現:

 

中文文字可通過設定正確的字型實現:
font = ImageFont.truetype("simsun.ttc", fontSize,encoding="utf-8")
文字顏色可通過RGB值設定,範例如下:
fill=(106,106,106)

2、旋轉文字

 可通過rotate函數實現:

 3、設定水印

可通過Image.paste函數實現:

 4、生成水印背景

1)需要通過迴圈控制,多次設定背景圖片;
i,j = 0,0
while True:
    x,y = i*step,i*step
    if y < height : 
        x = 0
    if y > height : 
        x = j*step
        j = j + 1
        y = height - 10
    #print(i,"xy :",x,y)
    draw_text(img,(x,y),fill,mask,rotated_mask)
    if (x + step > width ) and (y + step > height ) : break
    i = i + 1
2)匯出時需要新增質量引數,避免匯出的圖片失真;
img.save(dstFile,optimize=True, quality=100)

5、多程序加速

批次新增文字水印背景時,可使用程序池進行加速。
pool = Pool(processes=8)    # set the processes max number 
for root, dirs, files in os.walk(srcDir):
    for name in files:
        srcFile = os.path.join(root, name)
        dstFile = os.path.join(dstDir, name)
        print("%s => %s" % (srcFile,dstFile))
        # add_watermark(srcFile,dstFile,fontSize,myText,angle,fill,step)
        result = pool.apply_async(add_watermark,(srcFile,dstFile,fontSize,myText,angle,fill,step))
pool.close()
pool.join()  
完整原始碼可以從如下途徑獲取:
關注微信公眾號(聊聊博文,文末可掃碼)後回覆 20230704 獲取。 

三、執行效果

這裡演示下python3使用PIL新增中文文字水印背景的執行效果,具體如下:

 執行效果演示視訊獲取途徑:

關注微信公眾號(聊聊博文,文末可掃碼)後回覆 2023070401 獲取。 

四、資源下載

本文涉及原始碼和檔案,可以從如下途徑獲取:
關注微信公眾號(聊聊博文,文末可掃碼)後回覆 20230704 獲取。