一个偶然的需求,要给图片批量添加水印。一开始想到用ps做,但是无奈后面图片实在有点多了,就萌生了用python处理的想法。
在百度上找了很多的相关文章,大部分都不太行,有的要么是不能正常运行,有的是处理后效果不好。
在这个过程中,我也尝试了各种方法,填了很多坑,在这里就给大家说一说,我尝试过的方法,避免大家再次踩坑。
首先想的是用OpenCV-Python
使用opencv是因为觉得它足够强大,很多图像处理这块都是用的它,想着用opencv添加个水印,总不是什么难事儿吧!没想到却翻车了!
python给图片加水印很简单!你选Opencv还是PIL?
首先安装opencv-python:
pip install opencv-python
安装完成后,在.py脚本中导入:
import cv2
导入程序包,接下来就是读入图片和logo水印:
image = cv2.imread(img_path, cv2.IMREAD_UNCHANGED)
logo = cv2.imread(img_path, cv2.IMREAD_UNCHANGED)
**cv2.imread(filepath,flags)**这个函数,是用来读取图片的:
-
filepath:这个参数是指定图片的文件路径
-
flags:这个参数确定图片的参数
-
cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道,也就是如果是一张png图片的话,读入之后,png的透明部分会变成黑色,成为一张RGB图。
-
cv2.IMREAD_GRAYSCALE:读入灰度图片
-
cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道。用这个参数,如果原图是png格式的透明图片的话,就会完整读入了,这时候是RGBA图,如果是jpg图片,那么读取后就是一张RGB图。
-
但是要注意这几个参数,读取图片后的这个返回对象有所不同,对于IMREAD_COLOR读取的对象,是一个三维的矩阵,IMREAD_GRAYSCALE读取的对象是一个