引言:本人从小白自学python,为了测试基础学习效果,增加一定的促进,想通过参加全国计算机等级考试二级python来检验基础学习情况。在学习过程中,会将该过程编写的python小程序题目在此发表,希望找到共同学习的人一起讨论,可能发表的有许多不是很完善的地方,请大家指正。后期学习路线,还会继续通过参加一些社会类的考试来检验学习成果。高阶段学习的话,可能会参加一些python的比赛,或者自己接一些项目,然后会根据自己的情况将一些项目的Python程序在此分享。
码字不易,求赞,求关注,求赏
一、项目来源:工作中经常要对图片进行添加文字水印操作,每张图片去重复添加文字水印,既浪费时间又效率低下,利用python脚本,轻松几行代码就可以让电脑自动生成。
二、先上传自己写的代码
'''
# -*- coding: utf-8 -*-
# @File : image_draw.py
# @Author : lzm6407
# @Time : 2022/9/27 16:37
'''
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
import os
#设置输入目录文件夹
indir = r'in'
#设置输出目录文件夹
outdir = r'out'
#要插入图片的水印文字
text = "湖南0730" # 水印的文本
# 水印文本字体
ft = ImageFont.truetype(r'C:\WINDOWS\Fonts\msyh.ttc', 100)
if __name__ == '__main__':
#查找indir目录下的所有文件
allfile = os.listdir(indir)
for name in allfile:
infile = os.path.join(indir,name)
outfile = os.path.join(outdir,name)
try:
#打开图像文件
im =Image.open(infile)
draw = ImageDraw.Draw(im) # ImageDraw对象
width, height = im.size # 获得原始图片的宽和高
textwidth, textheight = draw.textsize(text, ft) # 获得文本的宽和高
margin_width = (width-textwidth)/2 # 设置横距空白,距离右边框像素保持居中
margin_height = height/2 #设置竖距空白,距离一半以上位置
x = width - textwidth - margin_width # 获得x轴轴坐标
y = height - margin_height # 获得y轴坐标
# 绘制水印
draw.text((x, y), text,
fill=(255, 0, 0),
font=ft)
im.save(outfile) #保存图片
except IOError as e:
print(e)
#继续转换下一个文件
continue
print('转换完成,请进out文件夹查看')
三、代码解读
1.记得要在python代码文件同目录下新建两个文件夹
2.记得把要处理的图片放入in文件夹,处理后的图片会自动保存到out文件夹
3.因为是脚本文件所以加了if __name__ == '__main__',在使用import导入该python文件时记得注意
4.添加的水印文字,文字内容和文字颜色都可以自行修改
四、运行效果
这里就不展示运行效果了,感兴趣的可以自己试试