Python利用filestools模块实现水印添加
作者:Sir 发布时间:2021-09-11 06:36:08
标签:Python,filestools,水印,添加
在前面的文章中很早有写到关于添加水印的方法,但是过程还是较为复杂,最近发现的这款filestools非标准库其实真正实现添加水印的只要一个函数的调用,一行代码即可完成水印的添加。
通过watermarker模块的add_mark函数就能轻松完成对图片水印的添加,但是这里为了能够将其开发成一个可用的功能。里面加入了其他的业务代码块实现对批量图片完成水印添加。
话不多说,我们直接进入正题,还是使用pip的方式来完成对filestools非标准库的安装,这里我们使用的是豆瓣的镜像站进行安装。
pip install filestools -i http://pypi.douban.com/simple/
将需要需要导入的第三方模块列举到下面,用于大家参考。
from watermarker.marker import add_mark # 添加水印模块
import os # 系统操作模块
from loguru import logger # 日志打印模块
将需要的模块导入到代码块以后,我们来编写一个函数batch_to_mark用来实现批量的添加的水印的效果。实现思路是这样的:将需要添加水印的图片全部整理到一个文件夹下面,再通过遍历该文件夹逐个对图片实现水印的添加也就完成了批量添加水印的功能。
def batch_to_mark(directory=None, water_name=None):
"""
This function takes a directory of .txt files and converts them to .mark files
:param directory: the directory where the files are located
:param water_name: The name of the watermark image
"""
if directory is None or water_name is None:
logger.info('文件夹地址或水印名称不能为空!')
return
for file_name in os.listdir(directory):
logger.info('当前文件名称:{0},即将开始添加水印操作!'.format(file_name))
add_mark(file=os.path.join(directory, file_name), out=os.getcwd(), mark=water_name,
opacity=0.3, angle=30, space=40, size=30)
logger.info('当前文件名称:{0},已经完成添加水印操作!'.format(file_name))
if __name__ == '__main__':
batch_to_mark(directory='C:/test/images/', water_name=u'Python 集中营')
这样批量添加水印的代码块就开发完成了,但是由于上面过程中使用到的add_mark函数有些参数是用于调整水印的位置大小、间距等参数的,所以这里专门说明一下以便大家可以根据自己的图片情况来调整。
'''
函数名称:add_mark,用于实现添加水印。
file:原始照片;
mark:使用哪些字符作为水印;
out:添加水印后保存的位置;
color:水印字体的颜色,默认颜色#8B8B1B;
size:水印字体的大小,默认50;
opacity:水印字体的透明度,默认0.15;
space:水印字体之间的间隔, 默认75个空格;
angle:水印字体的旋转角度,默认30度;
'''
最后,我选用了几个'亚索'的帅照来测试一下结果,图片是我去Google上下载的,下面我选用了两张来展示一下我们在添加完成水印的效果吧!
补充
当然还可以实现批量填加多张图片水印,下面是实现代码
from watermarker.marker import add_mark
import os
# 用os模块读取文件夹所有内容 ,使用 files 接收。
files = os.listdir('C:\\Users\\青灯教育\\Desktop\\111')
for file in files:
add_mark('C:\\Users\\青灯教育\\Desktop\\111\\'+file, mark='点赞、关注、收藏呀', opacity=0.5)
来源:https://mp.weixin.qq.com/s/XCWHgP6-rTbRKZsuVa9bow


猜你喜欢
- 本文实例为大家分享了pygame贪吃蛇游戏的具体代码,供大家参考,具体内容如下1.准备工作我们已经初始化了一个400*400的界面,为方便看
- django orm 有个defer方法,指定模型排除的字段。如下返回的Queryset, 排除‘username', 'i
- 网上有不少生成缩略图的ASP组件。若你的虚拟空间不支持注册新组件,可能会感觉自己的网站失色不少。心晴不才,结合网上资源写了个无组件生成缩略图
- 今天学习CI框架过程中遇到个问题: A PHP Error was encountered Severity: Notice Message
- 1.安装1.1 创建虚拟环境mkdir myprojectcd myprojectpython3 -m venv venv1.2 进入虚拟环
- 1、仅 Safari 和 Opera 识别的 Hack@media all and (min-width:&n
- 有时在处理不规则数据时需要提取文本包含的时间日期。dateutil.parser模块可以统一日期字符串格式。datefinder模块可以在字
- 0.先给大家看看效果:1.创建一个index.html文件<!DOCTYPE html><html lang="
- 最近接触一个项目,要在多个虚拟机中运行任务,参考别人之前项目的代码,采用了多进程来处理,于是上网查了查python中的多进程一、先说说Que
- 今天修改之前实习小伙伴写的js代码的时候,遇到修改后页面未发生变化的问题。因为我是web开发小白,所以上网查了一波,得以解决~~初次进行we
- Opera, 作为 A-Grade 浏览器,在现在的前端开发中务必支持。它很优秀,很不幸,bug是每个浏览器都不可避免的问题,Opera亦难
- 安装anaconda 是自动集成的如果导入不存在,直接pippip install tqmd参数#参数介绍iterable=None,des
- 一、愉客行车程监控并通知大概思路:用户填写指定信息在config.json文件中,通过定时访问网页,获取指定信息,从而达到对指定车程的监控1
- try 块允许您测试代码块以查找错误。except 块允许您处理错误。finally 块允许您执行代码,无论 try 和 except 块的
- 一、Python 文件读写概述Python 在文件读写操作中,会使用「内置函数」和「Pandas 库」两种方式。先来看内置函数,包括 ope
- 如何处理DataFrame的inf值在用DataFrame计算变化率时,例如(今天-昨天) / 昨天恰好为(2-0) / 0时,这些结果数据
- 前言前面已经讲了MySQL的其他查询性能优化方式,没看过可以去了解一下:MySQL查询性能优化七种方式索引潜水MySQL查询性能优化武器之链
- 本文实例为大家分享了js Tab选项卡切换效果,供大家参考,具体内容如下<!DOCTYPE html><html lang
- 函数就是把具有独立功能的代码块封装成一个小模块,可以直接调用,从而提高代码的编写效率以及重用性, 需要注意的是, 函数需要被调用才会执行,
- 装饰器其实一直是我的一个"老大难"。这个知识点就放在那,但是拖延症。。。其实在平常写写脚本的过程中,这个知识点你可能用到