方式1:PIL模块
给照片添加水印的代码多种多样,下面这种的或许是最为简单的形式,
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
def watermark_Image(img_path,output_path, text, pos):
img = Image.open(img_path)
drawing = ImageDraw.Draw(img)
black = (10, 5, 12)
drawing.text(pos, text, fill=black)
img.show()
img.save(output_path)
img = '2.png'
watermark_Image(img, 'watermarked_2.jpg','Python', pos=(10, 10))
方式2:用opencv模块
用opencv来给图片添加水印,主要用到的是cv2.putText()方法,里面共有大概9个参数,介绍如下:
image
:印有水印的图片text
:水印的具体文字org
:水印放置的横纵坐标,(x坐标,y坐标)font
、fontScale
:水印的字体相关的参数color
:水印的颜色thinkness
、lineType
、bottomLeftOrigin
:印有水印的图片相关的设置,线条的粗细哇、线条的样式哇等等
代码如下:
img=cv2.imread("test2.jpg") # 导入我们需要添加水印的图片
RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
blank_img = np.zeros(shape=(RGB_img.shape[0],RGB_img.shape[1],3), dtype=np.uint8)
font = cv2.FONT_HERSHEY_SIMPLEX
# 添加水印的文字内容
cv2.putText(blank_img,text='Learn Python',org=(40, 90),
fontFace=font,fontScale= 2,
color=(255,0,0),thickness=10,lineType=cv2.LINE_4)
然后我们将印有水印的图片和原图进行结合,代码如下
blended = cv2.addWeighted(src1=RGB_img, alpha=0.7,
src2=blank_img, beta=1, gamma = 2)
plt.imshow(blended)
方式三:filestools模块
filestools模块其本质上也是对ImageDraw.Draw.text()方法做了进一步的封装,让我们用起来会更加的简便,使用add_mark()方法可以生成数量较多的水印,该方法当中里面有8个参数,其中比较重要的几个是
- mark:水印的文字内容
- color、size、opacity、space、angle:水印文字的样式包括文字的大小、颜色、透明程度等等
样例代码如下:
from watermarker.marker import add_mark
add_mark(file = "test1.jpg", out = "add_mark_test1.jpg",
mark = "Python", opacity=0.2, angle=30, space=30)