我们在网上浏览一些文章的时候,经常会发现文章中会有一些图片,上面会有一些标识,而这些标识就是我们经常说的水印了。很多时候,我们需要给图片加上一些修饰,好让别人能直观的认识到这个图片的出处以及来源,同时还能有效防止别人盗图。

实现对图片的批量添加水印,可以告别繁琐的工作,增加工作效率。而对于添加水印和重命名,我们用到的模块有pillow,os,开发工具 sublime text 3。

一、单张图片添加水印文字

下载并导入所需模块

pip install pillow  #下载pillow模块from PIL import Image #导入,下同from PIL import ImageDrawfrom PIL import ImageFont

打开图片文件

im=Image.open('12.jpg')

构建画图对象

draw=ImageDraw.Draw(im)

导入字体文件

ImageFont.truetype(r'C:\Windows\Fonts\simsun.ttc',size=40)#导入字体文件

修改水印颜色

draw.ink = 0 + 0 * 256 + 255 * 256 * 256 # 颜色

添加水印

draw.text([200,200],text,'red',font=Font) # 文字加载到图片上

保存文件

im.save('12.png','png') #保存图片

完整代码如下:

from PIL import Imagefrom PIL import ImageDraw  from PIL import ImageFontim=Image.open('12.jpg')draw=ImageDraw.Draw(im) text = '我爱你'Font=ImageFont.truetype(r'C:\Windows\Fonts\simsun.ttc',size=40)#导入字体文件draw.ink = 0 + 0 * 256 + 255 * 256 * 256 # 颜色draw.text([200,200],text,'red',font=Font) # 文字加载到图片上im.save('12.png','png') #保存图片im.show() #显示图片

完成之后的效果是这样的:

可以看出我爱你三个打字就被刻在了上面。

二、单张图片添加水印图片

这样就完成了图片的首次文字水印,当然你也可以弄一个图片水印,只需加一层图层即可,比如我要将刘亦菲加在这个满是英文的图片上,就可以这样做:

导入相关模块

from PIL import Image

导入原图片和水印图片并得出原图片大小

im = Image.open('12.jpg') # 打开图片im1= Image.open('11.jpg') # 打开水印图片w,h= im.size

重新设置水印图片大小,保证图片不会与原图重叠并溢出

mm=im1.resize((80,40),Image.ANTIALIAS) #重新设置水印图片大小

设置水印图片位置

position = (w-100,h-100) # 默认设定水印位置为右下角

新建图层

layer = Image.new('RGB', im.size) # 新建一个图层

将水印图片添加到图层上

layer.paste(mm, position) # 将水印图片添加到图层上

合并水印和原图片为一张图

im2= Image.composite(layer, im, layer)#合并图片

保存图片

im2.save('21.jpg') #保存图片

完整代码如下:

from PIL import Imageim = Image.open('12.jpg')  # 打开图片im1= Image.open('11.jpg')  # 打开水印图片w,h= im.sizemm=im1.resize((80,40),Image.ANTIALIAS) #重新设置水印图片大小position = (w-100,h-100) # 默认设定水印位置为右下角layer = Image.new('RGBA', im.size)  # 新建一个图层layer.paste(mm, position)  # 将水印图片添加到图层上im2= Image.composite(layer, im, layer)#合并图片im2.save('21.jpg') #保存图片

这样即可完成水印图片的填充。效果图如下:

三、批量给图片添加水印文字但是我们要做的是批量给图片添加水印效果啊,所以现在我们需要用到某些系统模块,比如os。既然是批量,那我们肯定得先获取到某个目录所有图片文件了,我们可以这样做:1.遍历指定目录所有图片文件

def search(path):    for x in os.listdir(path): #遍历目录下的所有文件和文件夹        if os.path.isfile(x) and x.endswith('.jpg'): #判断文件x是否文件且它的后缀是否是.jpg            yield x  #生成器for y in search(r'C:\Users\Administrator\Desktop'):    ger(y) #桌面上所有的JPG文件

获取到了之后了我们就可以逐个读取到图片信息啦。2.添加水印接下来我们就可以写代码了,首先还是先写添加文字水印,如何批量添加了,那肯定是把这些逐个读取到的图片一个个打上文字水印啦,不过记得加一个睡眠时间,因为图片一下子全部读取保存会很耗费内存的,那么下面就跟小编一起来打水印吧。还是原来的套路,这里我就不细说了,免得大家说我像老太婆的裹脚布一样,直奔主题,上代码:

from time import sleepfrom PIL import Imagefrom PIL import ImageDrawfrom PIL import ImageFonta=0 #初始化图片编号def search(path):    for x in os.listdir(path): #遍历目录下的所有文件和文件夹        if os.path.isfile(x) and x.endswith('.jpg'): #判断文件x是否文件且它的后缀是否是.jpg            yield x   #生成器def ger(x):    font = ImageFont.truetype(r'C:\Windows\Fonts\simsun.ttc',size=40) #添加字体文件和字体大小    im=Image.open(x)    draw = ImageDraw.Draw(im)  #构建画图对象    draw.text((im.size[0]-330,im.size[1]-85), '我爱你', fill='blue',font=font)#添加水印    dir = r'C:\Users\Administrator\Desktop\tp' #保存位置    filename = os.path.join(dir,str(a)+'.jpg') #保存文件名    sleep(1)  #睡眠时间    im.save(filename) #保存文件for y in search(r'C:\Users\Administrator\Desktop'):    a=a+1  #每次开始保存文件,a就加一    ger(y) #添加水印并保存图片

最后结果就如下图所示:四、批量给图片添加水印图片可以看出已经对桌面上所有的JPG文件添加了水印,水印文字为‘我爱你’,批量添加水印图片也是差不多的套路,只需把添加单个水印图片代码稍加改动即可,下面请看:

from time import sleepfrom PIL import Imageimport datetimefrom PIL import ImageDrawfrom PIL import ImageFonta=0def search(path):    for x in os.listdir(path):        if os.path.isfile(x) and x.endswith('.jpg'):            yield xdef ger(x):    im=Image.open(x)    w,h= im.size    im1= Image.open(r'C:\Users\Administrator\Desktop\11.jpg')  #打开水印图片    mm=im1.resize((80,40),Image.ANTIALIAS) #重新设置水印图片大小    position = (w-100,h-100) # 默认设定水印位置为右下角    layer = Image.new('RGBA', im.size)  # 新建一个图层    layer.paste(mm, position)  # 将水印图片添加到图层上    im2= Image.composite(layer, im, layer)#合并图片    dir = r'C:\Users\Administrator\Desktop\tp'    filename = os.path.join(dir,str(a)+'.png') #要保存的文件名    sleep(1)  #睡眠时间    im2.save(filename) #保存文件for y in search(r'C:\Users\Administrator\Desktop'):    a=a+1    ger(y)

完成后效果如图:可以看出,我们桌面上的每一张图片基本上就已经能够打上水印了,是不是很简单了。五、批量文件名重命名在这里,小编还要给大家另外传授一个绝招,那就是批量文件改名了,也是相当的简单的说:

#批量重命名图片文件from PIL import Imageimport globimport osimport randomaa=input('路径:') #输入要改名的文件的目录os.chdir(r'%s'%aa)  #更改访问路径os.getcwd() #切换到当前目录ab=glob.glob('*.jpg')  #搜索所有的jpg文件qq=input('caoxun:') #输入存储新文件的目录for x in range(len(ab)):    os.rename(ab[x],os.path.join(qq,str(x)+'.bmp')) #重命名

运行后效果如图:如果你想平时用于修改文件名和加水印这些繁琐操作的话,也可以将小编写的这些功能封装到一个类模型里,然后做一个界面出来以方便别人使用,在这里由于时间关系小编就不写了。

总的来说该项目并没有多大的难点,唯一要注意的就是只有png图片在RGBA模式下设置alpha值才可以进行透明度设置,所以我并没有用这个鸡肋的功能,最后祝大家能学以致用,学有所成。

需要本文完整所有的代码,请关注本公众号,然后发送“2059”即可获取本文中所有代码!

- End -Python爬虫高级之JS渗透登录新浪微博 | 知了独家研究WTF?能把Python代码写得这么优雅的都是神仙程序员吧!Python协程还不理解?请收下这份超详细的异步编程教程!还没学会来找我!徐大sao吃了哪些好吃的?用Python生成词云,一目了然!性能是Flask的3倍!比PHP7还快!这个Python框架你值得拥有!(附使用教程)

批量改名_手把手教你用Python批量给图片添加水印 | 知了干货分享相关推荐

  1. c++批量重命名_手把手教你用Python批量给图片添加水印 | 知了干货分享

    我们在网上浏览一些文章的时候,经常会发现文章中会有一些图片,上面会有一些标识,而这些标识就是我们经常说的水印了.很多时候,我们需要给图片加上一些修饰,好让别人能直观的认识到这个图片的出处以及来源,同时 ...

  2. python复工_手把手教你使用Python批量创建复工证明-阿里云开发者社区

    /1 前言/ 受疫情影响,2020年2月份.3月份企业复工需为员工开具复工证明.因本公司人数较多,复制粘贴工作量巨大,特此为行政同事写此小工具,现与诸位共享. /2 目标/ 1.实现批量将 Excel ...

  3. 手把手教你用Python批量实现在Excel后里面新加一列,并且内容为excel 表名(附源码)...

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 打起黄莺儿,莫教枝上啼. 大家好, ...

  4. 怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...

    话不多说,首先先看效果图,它能够记录你在使用过程中的历史,方便你查看是否有错: 接下来就仔细分析一下是如何制作的: 简易计算器 第一步:导入资源库 在过程中使用到了tkinter这个资源库,win+R ...

  5. python爬虫爬取房源_手把手教你用Python网络爬虫爬取新房数据

    项目背景 大家好,我是J哥. 新房数据,对于房地产置业者来说是买房的重要参考依据,对于房地产开发商来说,也是分析竞争对手项目的绝佳途径,对于房地产代理来说,是踩盘前的重要准备. 今天J哥以「惠民之家」 ...

  6. 手把手教你用Python批量实现文件夹下所有Excel文件的第二张表合并

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 怀君属秋夜,散步咏凉天. 大家好, ...

  7. python进行数据预测_手把手教你用Python进行时间序列分解和预测

    原标题:手把手教你用Python进行时间序列分解和预测 作者:Mohit Sharma 翻译:数据派THU-王闯(Chuck) 预测是一件复杂的事情,在这方面做得好的企业会在同行业中出类拔萃.时间序列 ...

  8. python 靶心_手把手教你使用Python实战反欺诈模型|原理+代码

    原标题:手把手教你使用Python实战反欺诈模型|原理+代码 作者 | 萝卜 来源 | 早起Python(ID: zaoqi-python) 本文将基于不平衡数据,使用Python进行 反欺诈模型数据 ...

  9. python正确的输入语句_手把手教你在python中如何使用while True语句

    在学习过程中,经常能遇到采用while True的用法.下面以一个例子进行说明: 建立一个用户登录系统,用户输入用户名和密码,如果正确就可以进入系统. 1.我自己最开始的写法:d = {} #数据库字 ...

最新文章

  1. oracle count最快的方法,Oracle count哪种写法更快
  2. 如何让你的 Linux 系统干净整洁
  3. linux校园网电脑开wifi密码,Linux/Ubuntu 16.04 使用校园网客户端Dr.com DrClient 有线连网,同时开启WiFi热点...
  4. 如何成为一名有效的软件工程师
  5. android学习笔记:数据库存储
  6. 为什么使用@tablename起别名产生的sql语句不能用_10个简单步骤,完全理解SQL
  7. 一个Python 爬虫程序
  8. 教新手小白如何通过五分钟学会用Python爬取女神照片!
  9. 距离2022年研究生考试还有多少天?倒计时天数用便签设置
  10. 设置计算机关机时间快捷键,电脑怎么设定关机时间?
  11. android 放大缩小命令,Android TV开发中常用命令
  12. 人机交互技术课程实验报告《社交点评APP》系统移动界面分析报告
  13. 500 推荐一波高质量的公众号,都是值得大家关注的优质号!
  14. KeyPress 和KeyDown 、KeyPress的区别
  15. Kinect体感互动解决方案——体感人影粒子
  16. 6月9日の勉強レポート
  17. 国内主流平台QMT和Ptrade哪个软件更好用?应该怎么选择?
  18. 抖音 快手无人直播,云端推流详细教程
  19. 重复快捷键与简单的LOGO制作
  20. 用友财务软件--T3

热门文章

  1. javascript --- 函数的优化(尾调用优化)
  2. api-gateway实践(03)新服务网关 - 网关请求拦截检查
  3. python 操作RabbitMQ
  4. nginx php-fpm 输出php错误日志(转)
  5. SpeedyCloud研发总监李孟:不要让底层细节被上层打败
  6. Chuck Cobb谈敏捷组织中PMO的角色
  7. (原)离开,只为更好的活着
  8. 灾备还缺一套评价体系
  9. 排序算法:冒泡和快排 摘自网络
  10. 模板类 Template Classes 以及模板类编译时的处理