【Ubuntu】自动更换添加倒计时的壁纸
环境:Ubuntu20.04.2 LTSpython3主要功能介绍:取一张/多张基础图片,每天抽取一句诗词添加到图片的左下角,并在屏幕中间添加某天的倒计时。说明:图片和字体文件本文不提供。后附效果图。(颜值即争议)#!/usr/bin/env python# -*- coding:utf-8 -*-# @Time: 2021/5/5 下午9:10# @Author: kwzc4# @File: 动
·
【Ubuntu】自动更换添加倒计时的壁纸
目录
环境
Ubuntu20.04.2 LTS
python3
主要功能介绍
取一张/多张基础图片,每天抽取一句诗词添加到图片的左下角,并在屏幕中间添加某天的倒计时。
说明
图片和字体文件本文不提供。后附效果图。
代码实现
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2021/5/5 下午9:10
# @Author: kwzc4
# @File : 动态壁纸.py
'''
1.读文字
2.读图片并合成
3.合成
4.保存设置
注:文字,位置,颜色根据个人喜好自行修改
'''
import cv2
from PIL import ImageFont, ImageDraw, Image
import numpy as np
import linecache
import datetime
import os
img_path = "*.jpg你的基础背景文件"
img = Image.open(img_path)
this_path = "****你的文件保存地址"
word_path = "txt文件,我的是毛主席诗词"
font_path = "*.ttf你喜欢的字体文件地址"
font_size = 60
font_color= [255,255,255]
word_arr=[]
loc=[120,250]
#倒计时
flag_data = datetime.datetime.strptime('2022-4-15', '%Y-%m-%d')
today=datetime.datetime.today()
time_Countdown = (flag_data - today).days
#更改诗句格式
def get_word(word_path,num):
lines_len = len(open(word_path,'r').readlines())
line_word = linecache.getline(word_path, num%lines_len+1).strip()
word_arr=[[]]
i=0
max_len = 0
for voca in line_word :
if voca=="—" :
break
if voca in[",","。",":","!",";"]:
if max_len<len(word_arr[i]):
max_len = len(word_arr[i])
word_arr.append([])
i+=1
continue
word_arr[i].append(voca)
del word_arr[-1]
#补全
for i in word_arr:
if len(i)!=max_len:
i+=[' ']*(max_len-len(i))
word_arr = np.array(word_arr)
new_word_arr = np.array(word_arr)
hang = word_arr.shape[0]
lie = word_arr.shape[1]
for i in range(hang):
new_word_arr[i] = word_arr[hang-i-1]
new_word_arr = new_word_arr.T
word_arr =[]
for i in range(lie):
temp=""
for word in new_word_arr[i]:
temp += word
word_arr.append(temp)
return word_arr
#读图片并合成
def load_image(img_path,word_arr,loc,font_path,font_size,font_color):
#img
img = cv2.imread(img_path)
#font 相关设置
fontpath = font_path
font = ImageFont.truetype(fontpath, font_size)
img_pil = Image.fromarray(img)
draw = ImageDraw.Draw(img_pil)
#添加文字
for i in range(len(word_arr)):
draw.text((loc[0], loc[1]+int(font_size*i*1.25)), word_arr[i] , font = font, fill = (font_color[0],font_color[1], font_color[2]))
return np.array(img_pil)
#加诗句
word_arr = get_word(word_path,time_Countdown)
loc=[60,img.size[1]-int(len(word_arr)*1.3*font_size+20)]
bk_img = load_image(img_path,word_arr,loc,font_path,font_size,font_color)
cv2.imwrite("temp.jpg",bk_img)#保存图片
#加倒计时
img_path = "temp.jpg"
loc=[int(img.size[0]/2),int(img.size[1]/2-4*font_size)]
word_arr=["倒计时"+str(time_Countdown)+"天","列计划表!","今天的小目标是什么?","效率远比时长重要!"]#随便写了几句话,自行修改
bk_img = load_image(img_path,word_arr,loc,font_path,font_size,font_color)
#保存,设置背景
#cv2.imshow("add_text",bk_img)
#cv2.waitKey()
os.system("rm temp.jpg")
file_name = this_path+str(today.strftime('%Y_%m_%d'))+".jpg"
cv2.imwrite(file_name,bk_img)#保存图片
os.system("gsettings set org.gnome.desktop.background picture-uri "+file_name)
自动启动
cd /etc/init.d
sudo vim /etc/init.d/mystart.sh
#在文件末尾添加命令
nohup python3 -u /home/你的地址/动态壁纸.py
#保存退出
sudo chmod 777 /etc/init.d/mystart.sh
sudo update-rc.d mystart.sh defaults 90
#至此结束
附图
(颜值即正义,配色和位置后期再进行调整)
参考
https://blog.csdn.net/tuzixini/article/details/95616333
https://blog.csdn.net/waiwai3/article/details/79091118
https://blog.csdn.net/u013401853/article/details/73751717
更多推荐
已为社区贡献1条内容
所有评论(0)