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
0
投稿
猜你喜欢
- cmake-2.8.3.tar.gzmysql-5.5.8.tar.gz一,cmake-2.8.3的安装:tar -zxf cmake-2.
- 在本机运行含有JavaScript代码的网页时(比如Google AD代码),IE浏览器会产生一个警告。这个“警告”确实很烦人,开始时还会误
- 0. dockerfile命令FROM # 基础镜像,一切从这里开始构建MAINTAINER # 镜像是谁写的,姓名+邮箱RUN# 镜像构建
- tensorflow在1.4版本引入了keras,封装成库。现想将keras版本的GRU代码移植到TensorFlow中,看到TensorF
- 大家都知道,在SQL脚本中设置多字段做关键字相对比较简单,例:primary key(id1,id2) ,但用脚本建数据库就比较麻烦了。那么
- 与部门同事做了个小小的交流,话题杂而浅,在此做一个小纪录。1、什么是设计工业设计、环境设计、建筑设计、平面设计、网页设计、服装设计、信息设计
- 本文实例讲述了python对数组进行反转的方法。分享给大家供大家参考。具体实现方法如下:arr = [1,2,3]arr.reverse()
- 目录准备读取数据写入数据修改数据进阶用法最后准备首先,我们需要安装依赖包# 安装依赖包pip3 install 
- Supervisor 是基于 Python 的进程管理工具,只能运行在 Unix-Like 的系统上,也就是无法运行在 Windows 上。
- xhtml+css页面制作过程中问题的解决方案,说是解决方案应该有点过了,充其量只不过是给刚刚开始学标准页面制作的朋友们的一些小建议,如果讲
- python 中有6大标准类型:数字(Number)字符串(String)列表(List)元组(Tumple)集合(Set)字典(Dicti
- 本文实例讲述了Python编程实现数学运算求一元二次方程的实根算法。分享给大家供大家参考,具体如下:问题:请定义一个函数quadratic(
- python提高图像质量概述调研了一些提高图像质量的方式深度学习方法,如微软的Bringing-Old-Photos-Back-to-Lif
- 1.在查询分析器理启动或停止SQL Agent服务启动:use mastergoxp_cmdshell 'net start SQL
- V5.0之后,我们总结了一些得失。首先要说的是改版的动力。产品设计或产品升级的驱动力只有两个:用户需求和网站目标。之前的我们的多次改版,其驱
- <%'解析一个xml文件的公用函数集合dim document'装载一个xml文档,函数名Loaddocument(文
- 前提:因为本文主要围绕着在thinkPHP5中使用redis的,所以关于redis的安装就不特意说明了,不过在这稍微提醒一下,安装完redi
- 本文实例讲述了php实现的验证码文件类。分享给大家供大家参考。具体如下:<?php/*** @file* @version 1.0*
- SHA (Secure Hash Algorithm,译作安全散列算法) 是美国国家安全局 (NSA) 设计,美国国家标准与技术研
- 简要讨论为什么它不提供++作为运算符 正常情况下,当有人问起++原因而不是Python中的运算符时,这一行引起了我的注意。如果您想知道最初的