前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python加水印

Python加水印

作者头像
Elapse
发布2020-08-17 14:53:12
7880
发布2020-08-17 14:53:12
举报
文章被收录于专栏:E条咸鱼E条咸鱼

因为写在博客上的文章(部分)会给盗取,所以老早之前就写了一个加水印的程序

后来发现,因为防止文件名重复,我都是用一种随机的方式生成的文件名

filename=sys.argv[i]
suffix=filename[-3:]
temp_name=d.datetime.now().strftime("%M-%S")+"."+str(suffix)

但是这样一来就会打乱文件顺序(因为我命名都是1 2 3 4这样),不好管理,所以就稍微修改了一下,发出来图一乐

先导入库

import os
import sys
import time
import datetime as d
from PIL import Image, ImageDraw, ImageFont

因为一次性需要多个图片的问题,所以最开始写的时候想的是,文件拖过去就能执行了;获取文件名的方式就变成了

...
for i in range(1,100):
    filename=sys.argv[i]

就一直循环,看有没有参数

接着设置水印内容

...
text = "@blog.ernket.top"

下面就是加水印的操作了(水印固定右下角)

...
image = Image.open(filename)
font = ImageFont.truetype('C:\\Windows\\Fonts\\微软雅黑\\msyh.ttc',18)
layer = image.convert('RGBA')
text_overlay = Image.new('RGBA', layer.size)
image_draw = ImageDraw.Draw(text_overlay)

text_size_x, test_size_y = image_draw.textsize(text,font=font)

text_xy = (layer.size[0] - text_size_x, layer.size[1] - test_size_y)
image_draw.text(text_xy,text,font=font,fill='#000000') #字体颜色
after = Image.alpha_composite(layer,text_overlay)
temp_name=d.datetime.now().strftime("%M-%S")+"."+str(suffix)
after.save(temp_name)

文件水印加完了,现在考虑的是文件名的问题,我的做法是删除源文件防止报 文件已存在的错误,然后在重命名 (也许可以直接覆盖吧,懒得写

...
os.remove(filename)
os.rename(temp_name,filename)
print("[+] "+filename+" 已完成水印工作,正在替换文件名....  "+str(temp_name+" --> "+filename))
time.sleep(1)

到这就写完了,当然for循环的时候会报错,因为给的参数不同,加个 try就好了

import os
import sys
import time
import datetime as d
from PIL import Image, ImageDraw, ImageFont

print("Auther:Elapse")
for i in range(1,100):
    try:
        filename=sys.argv[i]
        suffix=filename[-3:]
        image = Image.open(filename)
        text = "@blog.ernket.top"
        font = ImageFont.truetype('C:\\Windows\\Fonts\\微软雅黑\\msyh.ttc',18)
        layer = image.convert('RGBA')
        text_overlay = Image.new('RGBA', layer.size)
        image_draw = ImageDraw.Draw(text_overlay)

        text_size_x, test_size_y = image_draw.textsize(text,font=font)

        text_xy = (layer.size[0] - text_size_x, layer.size[1] - test_size_y)
        image_draw.text(text_xy,text,font=font,fill='#000000')
        after = Image.alpha_composite(layer,text_overlay)
        temp_name=d.datetime.now().strftime("%M-%S")+"."+str(suffix)
        after.save(temp_name)
        os.remove(filename)
        os.rename(temp_name,filename)
        print("[+] "+filename+" 已完成水印工作,正在替换文件名....  "+str(temp_name+" --> "+filename))
        time.sleep(1)
    except:
        break
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 E条咸鱼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档