Python小技巧:两行代码实现批量给图片填加水印,这也太简单了

Python017

Python小技巧:两行代码实现批量给图片填加水印,这也太简单了,第1张

我们平时要给图片加水印,但是又不会PS,免不了着急上火,还找不到人,想想还是得自己学一手~

而且图片很多的话,PS还是挺慢的,用Python一键生成即可,效率杠杠的。

准备工作

环境的话我这里使用的是 Python 和 pycharm

如果添加一张图片的水印,两行代码就实现了。

本次使用的模块是 filestools , 第三方模块,咱们需要手动安装一下。

win+r打开搜索框,输入cmd 按确定后弹出命令提示符窗口,输入 pip install filestools 即可安装成功。

代码解析

1、单张图片添加水印

模块导入

怎么使用 filestools 模块呢?

首先导入模块里面的一个方法,watermarker ,点上 marker ,然后 import add_mark

add_mark 已经包含了很多方法

file 是添加水印照片 ,mark 使用哪些字作为水印,out 保存的地方 ,color 颜色,size 水印字体的大小,opacity 不透明度,space 字体间距,angle 旋转角度。

假设我要给图片添加上:人生苦短, 快学python

咱们把图片和文字加进去即可,代码如下:

2、批量填加多张图片水印

批量给图片添加的话,需要用到 OS 模块。

导入一下

用os模块读取文件夹所有内容 ,使用 files 接收。

打印一下

现在所有文件名字都有了

通过 for 循环遍历都打印出来

然后将文件添加进去,我们读取的是 img_1 里面的内容,那就把这个文件里的内容都传进去,保存数据的时候,都会保存在这里面。

再改一下透明度

我这里改成0.5

这样就清晰多了~

pdf文件中添加水印的话就不能够使用图片处理的库pillow了,而是需要用到reportlab这个库,一下就是这个库之中需要使用到的模块个方法,代码如下:

from reportlab.pdfgen import canvas

from reportlab.pdfbase import pdfmetrics

from reportlab.pdfbase.ttfonts import TTFont

from PyPDF2 import PdfFileWriter, PdfFileReader

2.导入模块之后就是要使用canvas模块来绘制出文件水印的图像了,需要先调用TTFont()方法来将需要使用到的字体文件加载进来。然后就是去设置一下水印的坐标、字体、大小、颜色、倾斜角度等等参数,代码示例如下所示:

cans = canvas.Canvas('water_back.pdf', pagesize=(21 * cm, 29.7 * cm))

cans.setFont('songti', 23)

cans.setFillColorRGB(0.5, 0.5,0.5)

cans.rotate(45)

cans.drawString(-7 * cm, 0 * cm, ’水印文字’)

cans.save()

3.以上的代码就是打开了一个pdf文件并且在里面绘制了文字水印,但是一个pdf文件可能是有很多页的,所以接下来还需要将pdf文件之中的每一页都给读取出来然后添加文字水印,详细的代码示例如下所示:

water = PdfFileReader(water_pdf)

water_page = water.getPage(0)

for page in range(pdf.getNumPages()):

pdf_page = pdf.getPage(page)

pdf_page.mergePage(water_page)

pdf_writer.addPage(pdf_page)

output_file = open(output_pdf, 'wb')

pdf_writer.write(output_file)

以上就是python向pdf文件之中添加水印的全部过程了,代码方法里面的所有参数都需要根据自己实际需要改成对应的文件路径就可以了,output就是pdf文件添加完水印之后保存在目录中的文件路径。