處於某些業務需求需要對一些特定的圖片增加水印,於是去了解了PIL這個庫,可以完美的解決這個問題
實現效果如下
安裝模塊
pip3 install pillow
具體代碼如下
from PIL import Image, ImageDraw, ImageFont imageFile = "./timg_3.jpg" imageInfo = Image.open(imageFile) fontOne = ImageFont.truetype("C:\Windows\Fonts\simfang.ttf", 100) fontTwo = ImageFont.truetype("C:\Windows\Fonts\simfang.ttf", 100) draw = ImageDraw.Draw(imageInfo) print(imageInfo.size) draw.text((imageInfo.size[0] / 2, imageInfo.size[1] / 2), u"這是一個測試圖片", fill=(255, 0, 0), font=fontOne) draw.text((imageInfo.size[0] / 2, imageInfo.size[1] / 2 + 300), u"等會去看電影", fill=(134, 153, 153), font=fontOne) imageInfo.show() # imageInfo.save(r"./image/target01.JPG") print("success")
代碼很簡單,下面具體講講上面每個方法的使用以及參數的意義:
from PIL import Image, ImageDraw, ImageFont # 從PIL中導包
imageFile
:需要添加文字的圖片地址(可以是相對地址也可以是絕對地址)imageInfo = Image.open(imageFile)
:使用image.open()
打開圖像
fontOne = ImageFont.truetype("C:\Windows\Fonts\simfang.ttf", 100) # 水印使用系統字體 fontTwo = ImageFont.truetype("C:\Windows\Fonts\simfang.ttf", 100) # 水印使用系統字體
使用 draw = ImageDraw.Draw(imageInfo)
實例化一個可寫對象
draw.text((imageInfo.size[0] / 2, imageInfo.size[1] / 2), u"這是一個測試圖片", fill=(255, 0, 0), font=fontOne) # 水印加載的位置 draw.text((imageInfo.size[0] / 2, imageInfo.size[1] / 2 + 300), u"等會去看電影", fill=(134, 153, 153), font=fontOne)
draw.text()方法中的參數解析
-
xy: 表示文字寫入圖片中的位置(注意:這里的坐標需為一個元組)
-
text: 加到圖片上的文字
-
fill: 水印文字的顏色(范圍:0-255,0-255,0-255)
-
font: 水印使用的自已
imageInfo.show(): 預覽圖片 imageInfo.save(r"./image/target01.JPG"):保存加入水印的圖片
更多關於PIL庫的使用參照PIL的用法
本文參考鏈接:
https://blog.csdn.net/danieljackz/article/details/94999416