【Ubuntu】自动更换添加倒计时的壁纸

【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

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值