今天是铁人赛的第十七天,要来做一个临时的side project : 批次在图档上加浮水印
大叔在写这个铁人赛的文章时,会把要demo的图片一次传到Imgur上面,因为图档大多是背景是黑色的终端机的操作画面,图片整批丢上去,无法从档案的缩图上看出图片的顺序
我上传图片前,图片的档名就已经先预先处理好,数字就是在文章版面顺序
只不过,图片上传到Imgur後,顺序并不会照我命名的档名排序(原本的档名也被改掉)
所以我的需求是在图片上面加上一个以数字当浮水印的程序,并且可以批次处里多个档案。
加上去的浮水印,只要能够在Imgur的缩图列表中,可以看到即可。
图片要加浮水印,有很多现成的软件可以实现,例如 ffmpeg 下指令就可以完成
但是大叔要练习自己写一个,但又不想花太多时间先Google 这程序有没有人写过
通常有都会范例参考啦! 还可以选喜欢的写法,例如我看到有class的写法就会跳过...
太复杂的也会跳过 XDD
from PIL import Image,ImageDraw,ImageFont
import os
#图档的资料夹 inpit output 这两个资料夹要跟 这只程序放同一个路径下
#资料夹名字 可以自己改
start_folder="input"
#放置处理好的图档
traget_folder="output"
for i in os.listdir(start_folder):
#print(i.split('.')[0])
#档名
filename=i
#浮水印文字 1.png 1 就式浮水印的文字内容
text_msg=i.split('.')[0]
#图片档
im=Image.open(start_folder+"/"+i)
#图片尺寸
im_w,im_h=im.size
#字形与大小
font=ImageFont.truetype("C:\Windows\Fonts\FiraCode-Retina.ttf",80)
fn_w,fn_h=dw.textsize(text_msg,font=font)
# 浮水印 贴在 图片上面
dw=ImageDraw.Draw(im)
#设定浮水印 x轴的位置 (置中)
x=im_w/2-fn_w/2
#浮水印的 x y轴位置、文字内容、字体颜色
dw.text((x,0),text_msg,font=font,fill=(255,0,0))
#im.show()
#存档 (输出)
im.save(traget_folder+ '/' + filename)
im.close()
完成图:
附上范例程序的bitbucket连结
这只程序没几行就写完了,其实是可以继续延伸下去,把程序的功能写得更完善
以下是我目前想到可以增加的地方
完整的介面
如果是单机使用的话可以用GUI介面或者写成网页端的应用
我会比较倾向用网页的方式解决,因为Python的GUI..很搞肛
用前端网页的话,多档案的拖曳上传有现成的JQuery的函式库可用
自动传到Imgur
承上,有一个介面的话,希望可以直接在上面更改档案的名字跟加浮水印
一键上传到自己的Imgur帐号里指定的相本,并把图片连结照顺序回传给我
一整个懒人的极致...以上都只是说说而已...如果有人敲碗的话再考虑...
以上就是铁人赛第17天的内容 :)
参考资料
>>: [Day29] 不敢把聊天纪录上传到分析网站? 自己用Python分析LINE聊天纪录!
这是今天要介绍的详细一点的数据类型: 整型(int/integer) 浮点型(float) 布尔型(...
set 可以使用大括号 { } 或者 set() 函数创建集合,以下为set用法: set 不会包含...
又到了跑范例环节,这次要试着学习 Tensorflow Serving, Tensorflow Se...
心血来潮 Vue基於 相容性(ie目前已知...恩) 语意化版本 Semantic Versioni...
下图演示了针对生物识别系统的九个攻击点。从传感器到特徵提取器的生物特徵数据的回放是其中之一。 . “...