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

7a1bf88d63d2122db73a8b4cd53eaa58.gif

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

实现对图片的批量添加水印,可以告别繁琐的工作,增加工作效率。而对于添加水印和重命名,我们用到的模块有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() #显示图片

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

84ce38fb4dc1377da99dd62c7cf10039.png

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

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

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

导入相关模块

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') #保存图片

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

2ff9e333124b3f9aea62e2af5755b79d.png三、批量给图片添加水印文字但是我们要做的是批量给图片添加水印效果啊,所以现在我们需要用到某些系统模块,比如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) #添加水印并保存图片
最后结果就如下图所示:4a354f44b66f72c1176a95918fa5dcdf.png四、批量给图片添加水印图片可以看出已经对桌面上所有的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)
完成后效果如图:f080b947b8be9b6fc93fb68ca57d4df3.png可以看出,我们桌面上的每一张图片基本上就已经能够打上水印了,是不是很简单了。五、批量文件名重命名在这里,小编还要给大家另外传授一个绝招,那就是批量文件改名了,也是相当的简单的说:
#批量重命名图片文件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')) #重命名
运行后效果如图:f7b3b7392d37a5b7e44d36116a2312cc.png如果你想平时用于修改文件名和加水印这些繁琐操作的话,也可以将小编写的这些功能封装到一个类模型里,然后做一个界面出来以方便别人使用,在这里由于时间关系小编就不写了。

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux环境下安装nginx步骤(不错)

开始前,请确认gcc g开发类库是否装好,默认已经安装。 ububtu平台编译环境可以使用以下指令 apt-get install build-essential apt-get install libtool centos平台编译环境使用如下指令 安装make: yum -y install gcc automake autoconf libt…

090609 T 领域建模

领域建模的重要性 以数据为中心的应用程序开发,面向过程分析方法的核心在于对数据库的设计。 而现在以面向对象的方式进行分析(OOA,OOD)时,领域建模就替换了上述方法的地位。在建模的同时,对需求有一…

配置apache、php、mysql之间的关系

1、index.php文件放入/usr/local/apache2/htdocs 目录下 其中index.php里面内容为&#xff1a; <?phpphpinfo();$dbc mysql_connect("127.0.0.1","root","win2009");if(!$dbc) {echo"数据库链接(面向过程)错误!";}else{echo"…

OpenGL.Tutorial15_Lightmaps

ZC&#xff1a;撤销 & 重做 — Blender Manual.html&#xff08;https://docs.blender.org/manual/zh-hans/dev/interface/undo_redo.html&#xff09; ZC&#xff1a;Blender下载地址&#xff1a;Index of _release_Blender2.50alpha_.html&#xff08;https://download.b…

后处理没有pui文件怎么打开_UG NX10.0四轴后处理下载(带PUI文件)

&#xfeff; 提示&#xff1a;点击上方"NX网"↑ 免费订阅 关注老叶NC程序演示&#xff1a;%G40 G17 G94 G80 G90M05M09G91 G28 Z0.0M01T00 M06(Tool NaneD4R0.5 XY 0.10mm Z0.00mm)(D4.00 R0.50 FL50.00 L75.00)G00 G90 G55 X68.263 Y.969 A187.77 S4500 M03G43 Z79…

java调用oracle 存储过程 以及游标使用

打开 PLSQL 创建一张&#xff1a;如果你没有PLSQL 找我 -- Create tablecreate table T_QUN_STUDY( T_ID NUMBER not null, T_NAME VARCHAR2(50), T_PASSWORD VARCHAR2(50))tablespace USERS pctfree 10 initrans 1 maxtrans 255 storage ( initial 64 …

日志处理中一些shell命令技巧

日志处理中一些shell命令技巧 阴差阳错的做的日志分析&#xff0c;前途未卜的这段日子&#xff0c;唯一还有点意思的可能就是手动的处理大量日志。总结一下。 日志文件的输入是动则几个G的文本。从N个这样的文件中得到一个列表&#xff0c;一个数字&#xff0c;一个比例。在什么…

catia v5法矢数据软件_catia介绍

CATIA是英文 Computer Aided Tri-Dimensional Interface Application 的缩写。 是世界上一种主流的CAD/CAE/CAM 一体化软件。在70年代Dassault Aviation 成为了第一个用户&#xff0c;CATIA 也应运而生。从1982年到1988年&#xff0c;CATIA 相继发布了1版本、2版本、3版本&…

(十七)WebGIS中距离及面积测量的原理和实现以及坐标转换的简单介绍

文章版权由作者李晓晖和博客园共有&#xff0c;若转载请于明显处标明出处&#xff1a;http://www.cnblogs.com/naaoveGIS/。 1.背景 在这一章里我们将讨论基础工具栏中另外两个常用工具&#xff1a;距离测量工具盒面积测量工具。 距离测量工具要求实现如下功能&#xff1a; a.通…

添加,修改,删除

前面声明&#xff1a; Imports System.Data Imports System.Data.OleDb ―――――――――――――――― Private ds As DataSet New DataSet Private ds1 As DataSet New DataSet Private sqlStr As String Private strcon As String "ProviderSQLOLEDB.1;Data Sour…

分享:一款快速传输大文件、支持英文版的工具

最近朋友小A向我求助&#xff1a;因为工作需要常常需要往国外发送数百兆甚至接近1G的超大文件。试了好几种方式都不满意&#xff0c;国内的可以发送超大附件的网站&#xff08;如QQ邮箱,各种网盘&#xff09;不支持英文界面&#xff0c;外国朋友看不懂。而WeTransfer这种免费We…

access查询出生日期格式转换_从身份证中提取出生日期的3个方法和计算年龄和星座的方法...

在我们日常的工作当中&#xff0c;经常会遇到通过身份证来获取出生年月日的需求&#xff0c;今天就给大家介绍三种可以从身份证中提取出生年月日的方法。我们都知道身份证不同的区域是有不同的含义的&#xff0c;代表出生年月日的数字是第7位到第14位&#xff0c;也就说我们把这…

MySql函数大全

[colorred]字符串函数[/color]ASCII(str)  返回字符串str的第一个字符的ASCII值(str是空串时返回0)mysql> select ASCII(2);  -> 50mysql> select ASCII(2);  -> 50mysql> select ASCII(dete);  -> 100 ORD(str)  如果字符串str句首是单字节返回与AS…

AutoRun Pro Enterprise II 教程--- 教你制作软件工具箱教程清晰版(教程画面清晰,教程语音可以调高)...

AutoRun Pro Enterprise II是一款功能极为强大的自动运行菜单制作工具。可在一个所见即所得的环境中创建并编辑一个专业的CD、DVD自动运行界面并生成自动运行文件。在自动运行界面中支持打开或执行文件&#xff0c;打印文档&#xff0c;发送邮件&#xff0c;访问站点&#xff0…

access如何设置定期报表汇总_报表工具选型对比系列 - 大报表

有些报表查询出的数据行数可达千万甚至上亿&#xff0c;这类报表通常被叫做大报表&#xff0c;大多数情况下都是些清单明细数据报表&#xff0c;也有少量分组报表。针对大报表&#xff0c;如果像常规报表一样&#xff0c;将数据一次性全取再交给前端呈现是不可行的。一是等待时…

CuteEditor—Html在线编辑器的领航者,超强的asp.net编辑器控件

CuteEditor—Html在线编辑器的领航者 NET、ASP.NET控件及源码大汇总 http://bbs.topsage.com/dispbbs.asp?boardid123&Id145465转载于:https://www.cnblogs.com/asingna/archive/2009/12/02/1615334.html

PLSQL Developer远程连接oracle数据库

前提是本机已经安装oracle&#xff0c;利用 net configuration assistant 。若本机没有安装oracle&#xff0c;无需装oracle的方法请点我打开net configuration assistant&#xff0c;选择“本地网络服务名配置&#xff0c;如下图所示然后选择添加服务名选择远程数据库实例名主…

【转】漫画:Bitmap算法

漫画&#xff1a;Bitmap算法转载于:https://www.cnblogs.com/apeway/p/10786283.html

广州 adobe 技术者开发日回归

今天&#xff0c;adobe 在广州举行了adobe 技术者开发日&#xff0c;一大早就起来搭车赶到广州去参加这次活动。这次活动&#xff0c;参加人数很多&#xff0c;不完全统计基本有200以上人&#xff0c;真是很难得一次聚会。在这次大会上7yue 发表很多讲话&#xff0c;还有adobe …

spad 探测器_大面阵SPAD阵列集成微透镜阵列,填充因子改善明显

基于CMOS制造工艺可实现大面阵、单片式单光子雪崩光电二极管(SPAD)阵列&#xff0c;并受到如3D成像、荧光寿命成像等各种应用的青睐&#xff0c;但常常受到低填充因子(fill factor&#xff0c;指感光区域面积与像元面积的比值)的困扰。SPAD填充因子的数值通常小于5%&#xff0c…