為圖片添加水印能夠在一定程度上避免其他人濫用您的圖片,這是保護圖片版權(quán)的一種有效方式。因此,當您在微博、或者博客等一些公眾平臺分享圖片的時候,建議您為自己的圖片添加一個水印,來證明這張圖片屬于您。
添加水印的方式的有很多種,比如通過一些圖像處理軟件,或者手機美圖軟件都可以實現(xiàn)添加水印的操作,但是這種操作比較復(fù)雜,甚至有些軟件還不是免費的。
Pillow 庫提供了添加水印的方法,操作簡單,易學(xué)、易用。下面我們講解如何使用 PIilow 給圖片添加水印。
我們知道,水印是附著在原圖片上一段文字信息,因此添加水印的過程中會涉及兩個問題:
只要解決了這兩個問題就可以成功添加水印。Pillow 提供的ImageDraw和 ImageFont模塊成功解決了上述問題。
PIL.ImageDraw 模塊提供了一系列的繪圖方法,通過該模塊可以創(chuàng)建一個新的圖形,或者在現(xiàn)有的圖像上再繪制一個圖形,從而起到對原圖注釋和修飾的作用。
下面創(chuàng)建一個 ImageDraw 對象,并對該對象的使用方法做簡單介紹:
draw = ImageDraw.Draw(im)
上述方法會返回一個 ImageDraw 對象,參數(shù) im 表示 Image 對象。這里我們可以把 Image 對象理解成畫布,通過調(diào)用 ImageDraw 對象的一些方法,實現(xiàn)了在畫布上繪制出新的圖形目的。ImageDraw 對象的常用方法如下表所示:
方法 | 說明 |
---|---|
text | 在圖像上繪制文字 |
line | 繪制直線、線段 |
eclipse | 繪制橢圓形 |
rectangle | 繪制矩形 |
polygon | 繪制多邊形 |
表格中第一個方法 ?text()
? 需要與 ImageFont 模塊一起使用,在下面會做詳細介紹。
繪制矩形圖的語法格式如下:
draw.rectangle(xy, fill=None, outline=None)
參數(shù)說明如下:
((x1,y1,x2,y2))
?;下面看一組簡單的示例:
from PIL import Image,ImageDraw
#創(chuàng)建 Image 對象,當做背景圖
im = Image.new('RGB',(200,200),color='gray')
#創(chuàng)建 ImageDraw 對象
draw = ImageDraw.Draw(im)
#以左上角為原點,繪制矩形。元組坐標序列表示矩形的位置、大??;fill設(shè)置填充色為紅色,outline設(shè)置邊框線為黑色
draw.rectangle((50,100,100,150),fill=(255,0,0),outline=(0,0,0))
#查看原圖片
im.show()
#保存圖片
im.save("../添加矩形圖.png")
圖形顯示結(jié)果如下:
圖1:繪制紅色矩形
PIL.ImagreFont 模塊通過加載不同格式的字體文件,從而在圖像上繪制出不同類型的文字,比如 TrueType 和 OpenType 類型的字體。
創(chuàng)建字體對象的語法格式如下:
font = ImageFont.truetype(font='字體文件路徑', size=字體大小)
如果想要在圖片上添加文本,還需要使用? ImageDraw.text()
?方法,語法格式如下:
d.text((x,y), "text", font, fill)
參數(shù)說明如下:
下面看一組使用示例,如下所示:
from PIL import Image,ImageFont,ImageDraw
#打開圖片,返回 Image對象
im = Image.open("./大熊貓.png")
#創(chuàng)建畫布對象
draw = ImageDraw.Draw(im)
#加載計算機本地字體文件(這里加載的是微軟雅黑)
font=ImageFont.truetype('C:/Windows/Fonts/msyh.ttc',size=36)
#在原圖像上添加文本
draw.text(xy=(80,50),text='W3cschool',fill=(255,0,0),font=font)
im.show()
im.save("./已處理.png")
圖像顯示結(jié)果如下:
圖2:添加文本
更多建議: