本文介绍如何使用Python给图像添加水印(文本或图片)
如果水印文件是JPG/JPEG格式,我们可以使用一些转换器将JPG转换为PNG。
PNG数组中的第四个整数称为“alpha通道”,它控制透明度(因此命名为“RGBA”)。如上图2所示,PNG支持透明度(即alpha通道),但JPG没有。
img = cv2.imread(img_path) # png图片,jpg需要转为RGBA通道
# add transparent log
transparent_watermark = Image.open(log_path1)
W,H = log.size # log的宽高
transparent_watermark=transparent_watermark.resize((W,H))
log = transparent_watermark
npy1 = np.array(transparent_watermark)
npy1= cv2.cvtColor(npy1,cv2.COLOR_BGRA2RGBA)
watermark_final = Image.fromarray(npy1)
# 先将原图粘贴的奥画布上,然后将log粘贴到画布上
transparent = Image.new(mode='RGBA',size = (img.shape[1],img.shape[0]), color=0)
transparent.paste(Image.fromarray(img),box=(0,0)) #box是粘贴的起始位置(左上方)
transparent.paste(im=watermark_final, box=(x,y), mask=watermark_final)
# 保存带有水印的图片
img=np.array(transparent)
以上是给图片添加水印的基本过程,如果我们想要控制水印的透明度,可以通过下面的方式来生成具有透明水印的log:
x,y=100,100 # 粘贴log在图片的左上角位置
W,H = log.size # log的宽高
log=cv2.addWeighted(img[y:y+H, x:x+W],0.5,log,0.5,0)