環境:Windows10_x64 Python版本 :3.9.2 Pillow版本:9.1.1 寫的博客文章被轉載且不註明出處的情況時有發生,甚至有部分轉載者將文章配圖添加自己的水印!為了保護作者勞動成果,添加水印是一個可選項。 今天記錄下Windows10環境下使用python3.9簡單實現批量添 ...
環境: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/
文檔地址: https://pillow.readthedocs.io/en/stable/二、具體實現
這裡列舉下實現文本水印背景的關鍵點。1、生成文本背景
可通過ImageDraw.text實現: https://pillow.readthedocs.io/en/stable/reference/ImageDraw.html#PIL.ImageDraw.ImageDraw.text中文文本可通過設置正確的字體實現:
font = ImageFont.truetype("simsun.ttc", fontSize,encoding="utf-8")文本顏色可通過RGB值設置,示例如下:
fill=(106,106,106)
2、旋轉文本
可通過rotate函數實現: https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.Image.rotate3、設置水印
可通過Image.paste函數實現: https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.Image.paste4、生成水印背景
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 + 12)導出時需要添加質量參數,避免導出的圖片失真;
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 獲取。![](https://files.cnblogs.com/files/MikeZhang/201804weixingongzhong1.gif)