想法起点
最近本人在B站上边学习JAVA,但苦于JAVA有上百多P的选集
每次看完课关掉浏览器都必须将当前页面添加到收藏夹,然后再删掉之前保存的链接
在密密麻麻的小框框里一个一个点是真的不舒服,还容易点错别的地方,有点搞心态T_T;
如图所示:
**
(上百P的视频)**
(复杂的点选有点搞心态)
————————————————————————
于是我想到可以通过一个程序,将所学习的进度输入,并打印到桌面上即可实现提醒自己学习进度,输入地址即可关联直接进入,修改最后的P的部分即可继续学习
如图:
地址栏直接输入关键字即可出现相关链接
可以看到,直接修改最后的P=127即可继续,修改完成直接回车即可继续学习。
————————————————————————
先上效果图
1、打开程序
2、输入给定的学习P数:
输入后回车即可
3、回车后将自动关闭窗口,将在壁纸的右上角打印上P数
程序思路
1、首先是学习结束后进行输入集数(P),通过键盘输入;
2、程序得到集数P后,通过指定的图像坐标将P进行打印到桌面壁纸上;
3、打印完成后,直接输出图像到根目录,并通过程序设定其为壁纸;
程序代码
**程序模块使用:
import cv2
from PIL import ImageFont, ImageDraw, Image
import numpy as np
import win32api
import win32con
import win32gui**
————————
1、首先是输入当前学习P数,并通过OpenCV模块读取原壁纸图像
print("今天又是学习的一天!请输入学习进度吧:") # 提示输入当前学习计划点
StudyPiont = int (input()) # 输入
bk_img = cv2.imread("1.jpg") # 读取1.jpg
2、通过PIL模块来对字体进行调整(字号、字体、大小等)
#设置需要显示的字体
fontpath = "font/simsun.ttc" # 设置字体
font = ImageFont.truetype(fontpath, 90) # 字体大小,当前90
img_pil = Image.fromarray(bk_img) #PiL模块
draw = ImageDraw.Draw(img_pil)
3、然后是对图像的确定点进行字符串的打印,绘制文字信息
#绘制文字信息
draw.text((4000, 100), "当前JAVA学习计划:P"+str(StudyPiont), font = font, fill = (255, 255, 255))
bk_img = np.array(img_pil)
4、通过OpenCV模块实现图像的输出
#cv2.imshow("add_text",bk_img) #展示图像
cv2.waitKey()
cv2.imwrite("add_text.jpg",bk_img) # OpenCV输出图像
// 当然,这里可以选择展示图像,我将其注释掉了,因为后期直接输入完就没了,没必要看效果。
5、通过系统模块设定壁纸(此处描述不是很清楚勿喷)
#设置壁纸模块
def setWallpaper(path):
#打开注册表
reg_key = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control Panel\\Desktop",0,win32con.KEY_SET_VALUE)
#2:拉伸 0:居中 6:适应 10:填充
win32api.RegSetValueEx(reg_key, "WallpaperStyle", 0, win32con.REG_SZ, "2")
# 我们选择了拉伸
#win32api.RegSetValueEx(reg_key,"Wallpaper")
#SPIF_SENDWININICHANGE:立即生效
win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, path, win32con.SPIF_SENDWININICHANGE)
然后是最后直接调用这个def的函数即可:
setWallpaper(r"G:\工作\工程\python\在图像上写字\add_text.jpg")
这里我用了绝对地址,大家用的时候记得改,否则将会读取不到导致壁纸黑屏。
注意事项
1、程序在使用前,可以先提前设定好“add_text.jpg”为我们的壁纸,如果不这么设定,开机后壁纸将会还原;
2、我的程序里使用到了绝对地址,大家在使用过程中可以根据自己的情况进行修改;
3、可以将程序固定到Start窗口里,结束看课后方便打开;
4、文字坐标会根据图像的大小变化,因为用的字体定位是绝对定位,用的时候要多次修改调整好位置!
整体代码
import cv2
from PIL import ImageFont, ImageDraw, Image
import numpy as np
import win32api
import win32con
import win32gui
print("今天又是学习的一天!请输入学习进度吧:") # 提示输入当前学习计划点
StudyPiont = int (input()) # 输入
bk_img = cv2.imread("1.jpg") # 读取1.jpg
#设置需要显示的字体
fontpath = "font/simsun.ttc" # 设置字体
font = ImageFont.truetype(fontpath, 90) # 字体大小,当前90
img_pil = Image.fromarray(bk_img) #PiL模块
draw = ImageDraw.Draw(img_pil)
#绘制文字信息
draw.text((4000, 100), "当前JAVA学习计划:P"+str(StudyPiont), font = font, fill = (255, 255, 255))
bk_img = np.array(img_pil)
#draw.text((4000, 200), "当前JAVA学习计划:P"+str(StudyPiont), font = font, fill = (255, 255, 255))
#bk_img = np.array(img_pil)
#cv2.imshow("add_text",bk_img) #展示图像
cv2.waitKey()
cv2.imwrite("add_text.jpg",bk_img) # OpenCV输出图像
#设置壁纸模块
def setWallpaper(path):
#打开注册表
reg_key = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control Panel\\Desktop",0,win32con.KEY_SET_VALUE)
#2:拉伸 0:居中 6:适应 10:填充
win32api.RegSetValueEx(reg_key, "WallpaperStyle", 0, win32con.REG_SZ, "2") # 选择了拉伸
#
#win32api.RegSetValueEx(reg_key,"Wallpaper")
#SPIF_SENDWININICHANGE:立即生效
win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, path, win32con.SPIF_SENDWININICHANGE)
setWallpaper(r"G:\工作\工程\python\在图像上写字\add_text.jpg")
没有PIL模块和OpenCV模块的小伙伴也别担心,我给你们封装好了EXE,你们直接就能下载用:
CSDN下载地址(EXE封包+源码)
相关来源:
利用python PIL模块在图片上写文字
利用OpenCV python图像输入输出
用python设置windows系统桌面背景(壁纸)的代码
都看到这了,给点支持吧~点个赞也好呀!:)