利用Python脚本给图片批量添加文字水印

引言:本人从小白自学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.添加的水印文字,文字内容和文字颜色都可以自行修改

四、运行效果

这里就不展示运行效果了,感兴趣的可以自己试试

你可能感兴趣的:(python零基础学习,python,开发语言)