给图片添加透明水印

本文介绍如何使用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)

参考:使用Python给图片添加水印 (qq.com)

你可能感兴趣的:(OpenCV,numpy,python,机器学习)