平常工作中,为保护原创,我们常常会给图片打水印,但是一般的工具存在水印只能添加在固定位置(比如左上、左下等),或者无法批量添加水印的问题。这些不灵活的应用会影响我们的工作效率。

今天,未明学院的老师就用Python帮大家解决这些问题,提高你的工作效率!

01

单张图片加图片水印

举个例子,我想为这张无水印图片打上水印:

首先导入用于完成打水印操作的Image模块:

from PIL import Image

使用 open() 函数指定要作为水印的图片:

watermark = Image.open(r"C:UsersadminDesktop运营批量给图片加水印LOGO.png")

指定要打水印的图片:

imageFile = Image.open(r"C:UsersadminDesktop运营批量给图片加水印数据分析技能课.jpg")

制作一个和imageFile大小相等的透明图片:

layer = Image.new('RGBA', imageFile.size, (0,0,0,0))

把水印图片贴在layer图片上,位置在右下角,距右边线300像素,下边线 100像素,如果layer.paste(watermark, (300, 100)),则是把水印打在左上角:

layer.paste(watermark, (imageFile.size[0]-300, imageFile.size[1]-100))

把layer和imageFile组合到一起,第2个参数是imageFile,第1、3个参数是layer:

out=Image.composite(layer,imageFile,layer)

保存带有水印的图片:

out.save(r"C:UsersadminDesktop运营批量给图片加水印数据分析技能课_图片水印.jpg")

现在可以看到图片右下角已经加上水印了:

02

单张图片加文字水印

除了添加图片水印,还可以添加文字水印!我们接着往下看~

首先,指定需要加水印的图片:

imageFile = Image.open(r"C:UsersadminDesktop运营批量给图片加水印数据分析技能课.jpg")

指定字体文件及字体大小:

font_big = ImageFont.truetype(r'C:UsersadminDesktop运营批量给图片加水印NotoSansCJKsc-Black.otf', 24)

font_samll = ImageFont.truetype(r'C:UsersadminDesktop运营批量给图片加水印NotoSansCJKsc-Black.otf', 15)

指定需要刻画的文字:

text1 = '未明学院'

text2 = 'http://www.enaca.cn'

准备在imageFile上刻画文字:

draw = ImageDraw.Draw(imageFile)

(imageFile.size[0]-450, imageFile.size[1]-85)用于指定刻画的文本的位置,以左上角为原点;text1和text2是要刻画的文本;fill设置刻画的文本的颜色,依次为RGB;font指定刻画的字体和大小:

draw.text((imageFile.size[0]-450, imageFile.size[1]-85), text1, fill=(134, 153, 153), font=font_big)

draw.text((imageFile.size[0]-485, imageFile.size[1]-45), text2, fill=(134, 153, 153),font=font_samll)

最后只需导出图像:

imageFile.save(r"C:UsersadminDesktop运营批量给图片加水印数据分析技能_文字水印.png")

一张带文字水印的图片就新鲜出炉啦~

03

批量添加图片水印

如果图片太多,还可以直接批量打水印。

首先,导入os模块和Image模块,前者用于获取文件路径,创建文件等操作;后者用于完成打水印操作:

import os

from PIL import Image

指定需要打水印的批量图片所在的文件夹:

start_folder =r"C:UsersadminDesktop运营批量给图片加水印等待打水印的图片"

指定图片打完水印之后保存的目的地文件夹:

target_folder = r"C:UsersadminDesktop运营批量给图片加水印完成打水印的图片"

如果指定的目的地文件夹不存在,那么就创建一个,如果存在就不需要创建了。

注意:target_folder只是一个代表路径的字符串,真正创建文件夹需要os.mkdir(today):

if not os.path.exists(target_folder):

os.mkdir(target_folder)

使用for...in遍历批量加水印,取出start_folder内的每一张图片进行打水印操作;其中os.listdir(start_folder)是start_folder文件夹下的每个文件的名字构成的列表:

for i in os.listdir(start_folder):

分别构建需要打水印的图片的完整路径start_file和打完水印的图片的完整路径target_file,包括所在文件夹、 和它的名字三个部分;其中os.sep 代表在路径中的一个 。这两个句子放在for循环中遍历:

start_file = start_folder + os.sep + i

target_file = target_folder + os.sep + i

以下部分参考前面单张图片打水印的代码说明~

指定作为水印的图片:

watermark = Image.open(r"C:UsersadminDesktop运营批量给图片加水印LOGO.png")

指定要打水印的图片:

imageFile = Image.open(start_file)

制作一个和imageFile大小相等的透明图片:

layer = Image.new('RGBA', imageFile.size, (0,0,0,0))

指定水印在图片中的位置,右下角:

layer.paste(watermark, (imageFile.size[0]-300, imageFile.size[1]-100))

把layer和imageFile组合到一起,第2个参数是imageFile,第1、3个参数是layer:

out=Image.composite(layer,imageFile,layer)

保存带有水印的图片:

out.save(target_file)

print(target_file + 'OK!')

没添加水印前:

添加水印后:

看了未明这么多期的技能贴,是不是感觉python很强大!

python可能除了不会生孩子,其他的什么都可以了~

原创不易,觉得本篇文章有用的话,请点个赞吧!

python批量添加水印_用Python批量添加水印,提高工作效率!相关推荐

  1. python做副业_学习Python可以做哪些副业,你是不是感觉自己错过了一个亿?

    另外小编整理了一套Python的学习资料需要的按以下步骤可获得! 1.评论 2.转发 3.关注 4.后台私信[python]即可获取! 人生苦短,我用Python. 近年来,Python凭借其简洁易入 ...

  2. python培训班-Python培训机构_高品质Python线下开发培训班推荐-黑马程序员

    Python编程基础基础班1 课时:15天技术点:97项测验:2次学习方式:线下面授 学习目标 1.掌握Python开发环境基本配置|2.掌握运算符.表达式.流程控制语句.数组等的使用|3.掌握字符串 ...

  3. python学不会怎么办_学Python很久都学不会,技术大牛教你打开它的正确方式

    当下,数字化时代已来临,借着人工智能的东风,Python在编程语言排行中的地位也不断攀升.简洁易于上手的语法和丰富的扩展,让它在教育培训.金融.财务.营销等领域都有一席之地. 学Python已成为当下 ...

  4. python自学办公自动化_用Python实现办公自动化要学习Python的哪些基础?

    python在办公自动化中有哪些应用场景可以提升工作效率?既然是办公那就绝对离不开excel.word.ppt,这里以python为例,简单介绍几个可以快速处理excel.word.ppt的第三方包, ...

  5. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  6. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  7. python实现文件共享_基于Python的分布式文件共享系统的实现

    龙源期刊网 http://www.qikan.com.cn 基于 Python 的分布式文件共享系统的实现 作者:朱亚林 纪宏伟 来源:<智能计算机与应用> 2015 年第 04 期 摘 ...

  8. 采用python解决实际问题_应用 Python 解决一些实际问题

    应用 Python 解决一些实际问题 韦建明 2004 年 1 月 10 日发布 关于Python Python 是一种简洁优美的编程语言,它具有面向对象的特征,较好的粘合其他语言的能力及跨平台性.然 ...

  9. python股票数据分析_利用PYTHON全自动生成分析报告

    日常工作当中,特别是金融行业当中,有不少人的工作是提取数据,分析数据,得到可视化图表,并加入自已的研究分析结论,最终生成分析报告,并且有不少报告是定期生成,存在不少重复手工劳动.本文通过一个简单实例, ...

  10. python分布式存储系统_基于Python的分布式文件共享系统的实现

    基于 Python 的分布式文件共享系统的实现 朱亚林 ; [期刊名称] <智能计算机与应用> [年 ( 卷 ), 期] 2015(005)004 [摘要] 大数据时代 , 信息的分享与传 ...

最新文章

  1. java树 JTree实例(可动态添加节点)
  2. ExtJs6.5.2新手入门——如何用sencha cmd创建自己的第一个项目
  3. 编程之美-从无头单链表中删除节点方法整理
  4. 强迫症福利--收起.NET程序的dll来
  5. Flex3 Chart学习笔记:PieChart(饼图)
  6. 怎么step into MFC Source code
  7. VSCode工具右键单击后无Open In Default Browser选项
  8. 2021产业互联网白皮书 附下载
  9. linux的QQ安装在哪个文件夹,linux安装QQ
  10. r语言导入spss数据_R软件导入数据_r语言怎么导入数据_R软件导入数据
  11. python把工作簿拆分为工作表_如何批将Excel的多个Sheet工作表拆分为独立的工作簿?...
  12. Latex:大于等于号和小于等于号
  13. phalapi可以依赖注入么_PhalApi:[2.11] 核心思想:DI依赖注入 让资源更可控
  14. Superset可视化之制作地图
  15. 调用JavaAPI发送传真
  16. No.054<软考>《(高项)备考大全》【冲刺8】《软考之 119个工具 (6)》
  17. C++ 数据结构之队列queue (henu.hjy)
  18. ###岁月静好###
  19. Calendar中 DAY_OF_MONTH, DAY_OF_YEAR, DATE 的区别
  20. 总结和创业从写自己的cms开始

热门文章

  1. C与C++在const用法上的区别
  2. JAVA程序猿面试题汇总
  3. 【收藏】Spark之RDD的mapPartitions算子
  4. 【完整代码】Scala AKKA实现两个Actor之间的通信代码示例
  5. 笔试题:写一个ArrayList 的动态代理类
  6. Linux 创建和删除目录命令mkdir、rmdir
  7. word2003快速排版工具栏_干货分享 | 闲到在家数瓜子?——先把ID排版秘籍学了吧(上)...
  8. mysql server 2012_Windows server 2012 搭建mysql双主
  9. SPI四种工作模式时序图
  10. 三星S5 电信版(G9009D)Android 5.0系统,root教程【亲测可行】