如何通过Python制作日历壁纸

news/2024/11/30 10:35:51/

自从看了冬奥会的开幕式,二十四节气的倒计时,祖国大好河山,美轮美奂,于是想搜索个图当壁纸。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bWM5YWl5byP6L2v5Lu25a6e5oiY5rS-,size_14,color_FFFFFF,t_70,g_se,x_16

作为一个有追求的程序员,更是个实用主义的人,要是壁纸上能加个日历就更好了。

将日历P上去?

小了,格局小了,作为程序员,我肯定是让程序生成一个的。

Flag是立了,草率了,活儿是挺多的。

得搞个万年历吧,看上去so easy!

不知道啥算法,百度里倒是能找出很多,五花八门。

后来,我查看了和万年历网页源码,反复研究了javascrip的实现方式。

leapDays:function(y) {

 if(calendar.leapMonth(y)) {

   return((calendar.lunarInfo[y-1900] & 0x10000)? 30: 29);

 }

 return(0);

},

其实,计算农历日期大多都是通过枚举日期数据的,而且大多都只能算到2050年。

作为优秀的程序员,我怎么可能满足于2050年,还说“万年”历呢!

好家伙,这水越趟越深了,直到我找到了一个较ephem的库。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bWM5YWl5byP6L2v5Lu25a6e5oiY5rS-,size_15,color_FFFFFF,t_70,g_se,x_16

以为很顺利的,谁知ephem这货是研究天文星体的。当然研究天文的东西,肯定可以算日期,包括农历天干地支等。

越看越糊涂,好想放弃,但是又不甘心,退回枚举的方法吧,又觉得太low了。

突然感觉自己是个倔强的程序员……

好了,在我日夜奋战努力专研攻克下,还真让我做出来了。

(中间省略1M个字……)

这么好的东西,取个名字吧,英文就叫CalendarWallpaper吧,缩写CalWp。

中文呢,万年历壁纸生成器,简称“万年壁”?呃……太俗了!

日历壁纸生成器,简称“日壁”?

……

算了,以后有灵感了再取名。

作为实用主义的优秀程序员,名字啥的都有点浮云。

先验证下功能!

1. 日历时间范围

我追求的目标是“上下五千年”,先挑几个时间点看看。

首先,来个大唐王朝的时间755年

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bWM5YWl5byP6L2v5Lu25a6e5oiY5rS-,size_20,color_FFFFFF,t_70,g_se,x_16

还行嘛!

再来个《三体》世界里的年代,2205年水滴对地球舰队发起攻击。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bWM5YWl5byP6L2v5Lu25a6e5oiY5rS-,size_20,color_FFFFFF,t_70,g_se,x_16

其实,听说ephem可以算任意日期,我有点不信,不过我没验证出溢出问题。这个库有个儒略日的概念,儒略日起于公元前4713年。往后呢,都是推算的,反正我输入很长的年份都能得到结果……

2. 日历在壁纸的位置

为了适合各种小伙伴各种追求,支持九个位置。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bWM5YWl5byP6L2v5Lu25a6e5oiY5rS-,size_18,color_FFFFFF,t_70,g_se,x_16

程序输入对应位置名称即可匹配。

3. 壁纸大小问题

目前支持电脑的宽屏,1280*720,2K,4K甚至8K的图都能很好适配。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bWM5YWl5byP6L2v5Lu25a6e5oiY5rS-,size_14,color_FFFFFF,t_70,g_se,x_16

手机屏幕尺寸的呢?目前没有,计划适配。

竖屏壁纸自动适配还在研究中。

4. 日历的周数和周一还是周日是第一天问题

有小伙伴可能是项目管理人员,喜欢关注周数,即当前周是这年的第几周。

有,通通满足你。

不过这里周数的定义没有统一的标准,比如每年的1月1日算第几周问题?目前很多公司都不一样,尽管现在有个ISO-8601的标准。

不过没关系,我提供参数让你们选,你说1月1是第一周可以,定义为ISO的标准也行。

来,我们先看看效果;

下图左边日历效果是将1月1日定为第一周,周一是每周的第一天的效;

右边日历是将1月1日定为ISO周数规则,并设置周日为一周的第一天的效果。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bWM5YWl5byP6L2v5Lu25a6e5oiY5rS-,size_20,color_FFFFFF,t_70,g_se,x_16

5. 色调和底色问题

有的软妹子程序媛喜欢淡淡的小清新壁纸,有的资深老手攻城狮喜欢深色神秘的壁纸。

都满足你们,这有两种色调四种配置。

这个配置解释比较废口水,看下图,你们对比下就能明白。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bWM5YWl5byP6L2v5Lu25a6e5oiY5rS-,size_19,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bWM5YWl5byP6L2v5Lu25a6e5oiY5rS-,size_20,color_FFFFFF,t_70,g_se,x_16

6. 在线壁纸适配

论壁纸,肯定有小伙伴会盯上Bing搜索主页的背景图,每日一图,还不重样。

这点小心思,我懂,通通安排。支持在线获取当天Bing主页图当壁纸。

还不满足?好了,除了当天的,昨天的前天的大前天的……通通支持(最大可支持向前6天图片)!

说了这么多,来个效果图看看

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bWM5YWl5byP6L2v5Lu25a6e5oiY5rS-,size_20,color_FFFFFF,t_70,g_se,x_16

7. 显示整年日历

通过--wholeyear选项可以输出整年日历壁纸(需要V1.1版本或以上才支持),例如

CalWp.exe --wholeyear --dispwk --wknum=1

可以得到以下效果壁纸

8.横向日历显示

通过--horizon选项可以输出横向日历壁纸(需要V1.2版本或以上才支持),例如

CalWp.exe --horizon -i pic.jpg --anchor=top

可以得到以下效果壁纸

 

9. 如何获得这个软件

上面说的天花乱坠的,要亲自试试才真的知道好不好。

那么,怎么获得这个软件呢?

关注公众号“嵌入式软件实战派”,聊天界面回复“CalWp"或者”日历壁纸“即可获得下载链接。

或者通过点击该CSDN链接[CalendarWallpaper日历壁纸]下载。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bWM5YWl5byP6L2v5Lu25a6e5oiY5rS-,size_16,color_FFFFFF,t_70,g_se,x_16

8. 注意事项

日历壁纸生成软件开放给大家做学习研究使用,未经允许,不得挪作他用。

制作的壁纸也要注意图片版权问题,不要乱做商业用途哦。

如果你有其他疑问、建议或者其他奇思妙想,可以在公众号对话框留言,或者发邮件给我。


http://www.ppmy.cn/news/252047.html

相关文章

在线壁纸(网页端)

首先,这个网站非常的简约,进去就是各种壁纸推荐,都是最近更新的一些壁纸资源,继续向下滑还有更多的壁纸,各种尺寸的都有,清晰度高。 壁纸的分类也非常的齐全,包含有4K专区,美女模特&…

Agile | 聊聊敏捷开发

什么是敏捷开发 敏捷开发是一种迭代和增量的项目管理方法,优先考虑适应性、协作和快速交付,而不是遵循严格的计划[0]。它是在《敏捷软件开发宣言》和《12项原则》中表达的一组价值观和原则[1]。敏捷是基于这些价值观和原则的一组框架和实践的总称。敏捷…

「HTML和CSS入门指南」span 标签详解

什么是 span 标签? 在 HTML 中,span 标签用于对文本或其他元素进行分组,并可以为其指定样式和属性。 span 标签的基本语法 以下是 span 标签的基本语法: <span><!-- 在这里放置您的内容 --> </span>请注意,span 标签必须闭合,并且任何文本都应该放置…

文件上传与PDF报表入门

文件上传与PDF报表入门 理解DataURL的基本使用&#xff0c;实现DataURL的文件上传完成基于七牛云的文件上传 理解 JasperReport生命周期 独立完成 JasperReport的入门案例 图片上传 需求分析 如图所示&#xff0c;实现员工照片上传功能 Data URL DataURL概述 所谓DataURL是指&q…

计算机考研面试汇总

数据结构 数据三要素----数据的&#xff1a;逻辑结构&#xff0c;存储结构&#xff0c;运算 时间复杂度–将算法中基本运算的执行次数的数量级作为时间复杂度。 顺序表有哪些缺点&#xff1f;&#xff08;逻辑上相邻的元素&#xff0c;在物理位置上也相邻&#xff09; 优点&a…

学习整理软测(八)-----数据库命令与操作

关系型数据库管理系统(RDBMS) Relational Database Management System 关系型数据库系统通过表来表示关系 当前主要使用两种类型的数据库&#xff1a;关系型数据库、非关系型数据库&#xff0c;我们主要学习主流的关系 型数据库 所谓的关系型数据库RDBMS&#xff0c;是建立在关…

【面试题001】最强java八股文

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

现代互联网的TCP拥塞控制(CC)算法评谈

动机 写这篇文章本质上的动机是因为前天发了一个朋友圈&#xff0c;见最后的写在最后&#xff0c;但实际上&#xff0c;我早就想总结总结TCP拥塞控制算法点点滴滴了&#xff0c;上周总结了一张图&#xff0c;这周接着那些&#xff0c;写点文字。 前些天&#xff0c;Linux中国…