用python给照片添加水印的三种方式

方式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坐标)
  • fontfontScale:水印的字体相关的参数
  • color:水印的颜色
  • thinknesslineTypebottomLeftOrigin:印有水印的图片相关的设置,线条的粗细哇、线条的样式哇等等

代码如下:

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)

猜你喜欢

转载自blog.csdn.net/cui_yonghua/article/details/130114443