今天LP大人,有几百张各种细菌的图片要发到一个微信群,但是她尝试了几张后发现,发过去的图片在群里面没有显示它本来的名称,点开图片也看不到细菌的名字,本来我是打算让她把图片打成压缩包发过去,别人一解压,压缩包里有图片带名字的,但人家不愿意,说领导让直接一张一张发群里,我也不晓得她们领导发哪样神经,不过呢,LP的领导管着她,她又管着我,最后这差事只能落我手里了。
几百张图片,我也不可能去一张一张打开用PS给加文字,而且它每张图片的名字都不一样,那些批量给图片加水印的软件也用不上了。
只能自己写一个了,还好也不难,原理嘛,就是用python遍历图片文件,把图片文件名取出来,变成文字,给画到图片上,最后另存。
下面是源码:
# pip install pillow
# Importing the PIL library
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
import os
import re
import shutil
path = os.getcwd() #取当前目录
if (os.path.exists("out")):
shutil.rmtree("out") # 递归删除非空文件夹
os.mkdir("out") # 创建一个out目录,打上文字的图片放这个目录,避免覆盖原图
lsts = os.listdir(path) # 目录文件列表
for fname in lsts: # 遍历每一个文件
if (re.search(r'bmp|jpg',fname)==None): # 如果不是bmp和jpg格式的略过
continue
fullName = "%s\\%s"%(path,fname) # 得到该文件完整路径
# Open an Image
img = Image.open(fullName) # 打开图片
# Call draw Method to add 2D graphics in an image
I1 = ImageDraw.Draw(img) # 准备画图
myFont = ImageFont.truetype('simsun.ttc', 65) # 加载字体文件
# Add Text to an image
I1.text((28, 36), re.sub(r"\.(bmp|jpg)", "", fname), font=myFont, fill=(255, 0, 0)) # 将文件名去后缀后画在图片上
# Display edited image
# img.show()
# Save the edited image
img.save("%s\\out\\%s"%(path,fname)) # 图片另存到 out 目录
说明,simsun.ttc 文件怎么获取:
1,开始 -> 运行,输入 control ,并确定
2,打开控制面板后,搜索“字体”
3,打开字体目录,并搜索““simsun.ttc””
4,复制到你的程序文件同目录就行了。