制作 MacOS系统 の Heic动态壁纸
了解动态桌面壁纸
当macOS 10.14发布后,会发现系统带有动态桌面壁纸,设置后,我们的桌面背景将随着一天从早上、到下午、再到晚上的推移而发生微妙的变化。
虽然有些软件也有类似的动态变化效果,但是在新系统中默认的HEIC格式的动态壁纸体验更好。
- HEIC格式的文件更小、图像更清晰;
- 由于晨昏变化随着四季、地理位置并非一成不变,如果全年都按照一个节拍切换壁纸,其效果在绝大数日子里都将跟真实景象不同步。而Mojave的动态桌面,可以真正做到与当地的光照同步变化。理想情况下,切换的节奏与太阳运动、四季各不相同,并且根据用户的地理位置和日期,有选择地跳过一些不符合实际情况的照片。
动态桌面壁纸原理
MacOS Mojave动态桌面壁纸,是以太阳方位为标准,将对应的壁纸文件封装到heic文件中。
(1) 每套桌面壁纸包含16张静态图片(可以更多或更少),1个记录图片与太阳方位对应关系的json文件
。解析系统中壁纸文件信息如下:
<dict><key>a</key><real>-38.04743388682423</real><key>i</key><integer>15</integer><key>o</key><integer>0</integer><key>z</key><real>53.509085812513092</real>
</dict>
其中,a是altitude,z是azimuth。
(2) 在json文件中,每张图片都标记了对应的太阳方位,即高度角(Altitude:太阳与地平线的夹角)
和方位角Azimuth:太阳按顺时针方向偏离正北的角度
,通过这两个值确定太阳在天体中的位置。其关系图如下:
(3) 壁纸运行时,系统将根据用户的位置和时间计算太阳的实际方位,并与壁纸中标记的信息对比,展示最接近的壁纸图片。
动手做一个HEIC的动态壁纸
在GitHub上,开发者已开发了命令行工具,快速的制作heic动态桌面壁纸。原文:https://github.com/mczachurski/wallpapper
准备环境
- 使用macOS的电脑
- 安装了最新的XCode和Swift
安装软件包
打开终端工具,安装wallpapper软件包
Homebrew方式安装
brew tap mczachurski/wallpapper
brew install wallpapper
普通安装
自行确定好一个安装目录位置,进入进行安装
git clone https://github.com/mczachurski/wallpapper.git
cd wallpapper
swift build --configuration release
sudo cp .build/x86_64-apple-macosx/release/wallpapper /usr/local/bin
确定是否安装成功
我们可以在终端中输入”wallpaper -h”来测试,如果出现如下类似信息表示安装成功。
kim@Kims-MacBook ~ % wallpapper -h
wallpapper: [command_option] [-i jsonFile] [-e heicFile]
Command options are:-h show this message and exit-v show program version and exit-o output file name (default is 'output.heic')-i input .json file with wallpaper description-e input .heic file to extract metadata
准备草料
Solar太阳坐标
对于跟随太阳坐标变化的动态壁纸,json文件必须具有类似下面的结构。
准备文件夹,将图片放在文件夹中,并且同级目录下创建json文件,结构如下:
[{"fileName": "1.png","isPrimary": true,"isForLight": true,"altitude": 27.95,"azimuth": 279.66},{"fileName": "2.png","altitude": -31.05,"azimuth": 4.16},...{"fileName": "16.png","isForDark": true,"altitude": -28.63,"azimuth": 340.41}
]
参数说明:
fileName: 图片名称
isPrimary: 是否是主图,其在创建heic文件后可见。一个heic文件中只有一个主图。
isForLight: 如果用户选择“Light模式(静态)”壁纸时,将显示该图片,也只能一张设置为true,可不设置。
isForDark: 如果用户选择“Dark模式(静态)”壁纸时,将显示该图片,也只能一张设置为true,可不设置。
altitude: 太阳的高度
azimuth: 太阳绕地平线的角度
altitude和azimuth可以在 https://keisan.casio.com/exec/system/1224682277 进行计算,你上传一张你当地拍摄的图片,可以查看图片的太阳信息,也可以看到我们所在地的全部时刻表与太阳方位的对应关系。如果使用apple手机,安装SkyGuide等天文APP也可以查询太阳方位。
Time系统时间
对于基于MacOS系统时间变化的壁纸,所使用的json结构如下:
[{"fileName": "1.jpg","isPrimary": true,"isForLight": true,"time": "2025-05-21T23:00:00Z"},{"fileName": "2.jpg","time": "2025-05-22T09:30:00Z"},{"fileName": "3.jpg","isForDark": true,"time": "2025-05-22T12:00:00Z"}
]
参数:
fileName: 图片名称
isPrimary: 是否是主图,其在创建heic文件后可见。一个heic文件中只有一个主图。
isForLight: 如果用户选择“Light模式(静态)”壁纸时,将显示该图片,也只能一张设置为true,可不设置。
isForDark: 如果用户选择“Dark模式(静态)”壁纸时,将显示该图片,也只能一张设置为true,可不设置。
time: 壁纸变化的时间(重点是整时, 且要注意使用世界标准时间进行一个换算)。T表示分隔符,Z表示的是UTC。
UTC:世界标准时间,在标准时间上加上8小时,即东八区时间,也就是北京时间。北京时间:2020-01-14 00:00:00对应的国际标准时间格式为:2020-01-13T16:00:00.000Z
Apperance系统外观
对于基于MacOS系统外观设置(Light/Dark)的壁纸,我们准备的json文件更加简单,只需要使用2个图像,1个用于Light模式,1个用户Dark模式。
[{"fileName": "1.png","isPrimary": true,"isForLight": true},{"fileName": "2.png","isForDark": true}
]
参数:
fileName: 图片名称
isPrimary: 是否是主图,其在创建heic文件后可见。一个heic文件中只有一个主图。
isForLight: 如果用户选择“Light模式(静态)”壁纸时,将显示该图片。
isForDark: 如果用户选择“Dark模式(静态)”壁纸时,将显示该图片。
生成HEIC文件
当准备好图片和json文件后,进入该目录,执行以下命令即可生成HEIC文件。
wallpapper -i wallpapper.json
我们就能得到HEIC文件,然后将壁纸放到MacOS的/Library/Desktop Pictures
文件夹。这个文件夹就是Mac系统存放壁纸的地方,最后我们到设置壁纸设置就行啦~!
不想动手??那就取现成的吧~ 哈哈哈~ 资源地址:MacOS Wallpapper
相关文章:

制作 MacOS系统 の Heic动态壁纸
了解动态桌面壁纸 当macOS 10.14发布后,会发现系统带有动态桌面壁纸,设置后,我们的桌面背景将随着一天从早上、到下午、再到晚上的推移而发生微妙的变化。 虽然有些软件也有类似的动态变化效果,但是在新系统中默认的HEIC格式的动…...

大数据 笔记
kafka kafka作为消息队列为什么发送和消费消息这么快? 消息分区:不受单台服务器的限制,可以不受限的处理更多的数据顺序读写:磁盘顺序读写,提升读写效率页缓存:把磁盘中的数据缓存到内存中,把…...
js中encodeURIComponent函数使用场景
encodeURIComponent 是 JavaScript 中的一个内置函数,它的作用是: 将字符串编码为可以安全放入 URL 的形式。 ✅ 为什么需要它? URL 中有一些字符是有特殊意义的,比如: ? 用来开始查询参数 & 分隔多个参数 连接…...
iOS工厂模式
iOS工厂模式 文章目录 iOS工厂模式简单工厂模式(Simple Factory)工厂方法模式(Factory Method)抽象工厂模式(Abstract Factory)三种模式对比 简单工厂模式(Simple Factory) 定义&am…...

【数据库】-1 mysql 的安装
文章目录 1、mysql数据库1.1 mysql数据库的简要介绍 2、mysql数据库的安装2.1 centos安装2.2 ubuntu安装 1、mysql数据库 1.1 mysql数据库的简要介绍 MySQL是一种开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,目前…...
【缓存】JAVA本地缓存推荐Caffeine和Guava
🌟 引言 在软件开发过程中,缓存是提升系统性能的常用手段。对于基础场景,直接使用 Java集合框架(如Map/Set/List)即可满足需求。然而,当面对更复杂的缓存场景时: 需要支持多种过期策略&#x…...
Prometheus的服务命令和配置文件
一、Prometheus的服务端命令和启动方式 1.服务端命令(具体详情可以--help查看) --config.file“prometheus.yml”指定配置文件,默认是当前目录下的prometheus.yml--web.listen-address"0.0.0.0:9090"web页面的地址与端口…...

物流项目第五期(运费计算实现、责任链设计模式运用)
前四期: 物流项目第一期(登录业务)-CSDN博客 物流项目第二期(用户端登录与双token三验证)-CSDN博客 物流项目第三期(统一网关、工厂模式运用)-CSDN博客 物流项目第四期(运费模板列…...
前端JavaScript-嵌套事件
点击 如果在多层嵌套中,对每层都设置事件监视器,试试看 <!DOCTYPE html> <html lang"cn"> <body><div id"container"><button>点我!</button></div><pre id"output…...

X 下载器 2.1.42 | 国外媒体下载工具 网页视频嗅探下载
X 下载器让你能够轻松地从社交应用如Facebook、Instagram、TikTok等下载视频和图片。通过内置浏览器访问网站,它能自动检测视频和图片,只需点击下载按钮即可完成下载。去除广告,解锁本地会员,享受无广告打扰的下载体验。 大小&am…...

STM32 CAN CANAerospace
STM32的CAN模块对接CANAerospace 刚开始报错如下. 设备开机后整个CAN消息就不发了. USB_CAN调试器报错如下. index time Name ID Type Format Len Data00000001 000.000.000 Event 总线错误 DATA STANDARD 8 接收过程错误-格…...

完整改进RIME算法,基于修正多项式微分学习算子Rime-ice增长优化器,完整MATLAB代码获取
1 简介 为了有效地利用雾状冰生长的物理现象,最近开发了一种优化算法——雾状优化算法(RIME)。它模拟硬雾状和软雾状过程,构建硬雾状穿刺和软雾状搜索机制。在本研究中,引入了一种增强版本,称为修改的RIME…...

服务器安装xfce桌面环境并通过浏览器操控
最近需要运行某个浏览器的脚本,但是服务器没有桌面环境,无法使用,遂找到了KasmVNC,并配合xfce实现低占用的桌面环境,可以直接使用浏览器进行操作 本文基于雨云——新一代云服务提供商的Debian11服务器操作,…...
Java设计模式之组合模式:从入门到精通(保姆级教程)
文章目录 1. 组合模式概述1.1 专业定义1.2 通俗解释1.3 模式结构2. 组合模式详细解析2.1 模式优缺点2.2 适用场景3. 组合模式实现详解3.1 基础实现3.2 代码解析4. 组合模式进阶应用4.1 透明式 vs 安全式组合模式4.2 组合模式与递归4.3 组合模式与迭代器5. 组合模式在实际开发中…...

Oracle 创建外部表
找别人要一下数据,但是他发来一个 xxx.csv 文件,怎么办? 1、使用视图化工具导入 使用导入工具导入,如 DBeaver,右击要导入的表,选择导入数据。 选择对应的 csv 文件,下一步就行了(如…...

大语言模型 17 - MCP Model Context Protocol 介绍对比分析 基本环境配置
MCP 基本介绍 官方地址: https://modelcontextprotocol.io/introduction “MCP 是一种开放协议,旨在标准化应用程序向大型语言模型(LLM)提供上下文的方式。可以把 MCP 想象成 AI 应用程序的 USB-C 接口。就像 USB-C 提供了一种…...

【软考向】Chapter 9 数据库技术基础
基本概念数据库的三级模式结构 数据模型E-R 模型关系模型各种键完整性约束 关系代数5 种基本的关系代数运算:并、差、笛卡儿积、投影和选择扩展的关系代数运算:交(Intersection)、连接(Join)、除(Division)、广义投影(Generalized Projection)、外连接(O…...

实战:Dify智能体+Java=自动化运营工具!
我们在运营某个圈子的时候,可能每天都要将这个圈子的“热门新闻”发送到朋友圈或聊天群里,但依靠传统的实现手段非常耗时耗力,我们通常要先收集热门新闻,再组装要新闻内容,再根据内容设计海报等。 那怎么才能简化并高…...

STM32单片机GUI系统1 GUI基本内容
目录 一、GUI简介 1、emWin 2、LVGL (Light and Versatile Graphics Library) 3、TouchGFX 4、Qt for Embedded 5、特性对比总结 二、LVGL移植要求 三、优化LVGL运行效果方法 四、LVGL系统文件 一、GUI简介 在嵌入式系统中,emWin、LVGL、TouchGFX 和 Qt 是…...
从零开始学习three.js(21):一文详解three.js中的矩阵Matrix和向量Vector
一、三维世界的数学基石 在Three.js的三维世界里,所有视觉效果的实现都建立在严密的数学基础之上。其中向量(Vector) 和矩阵(Matrix) 是最核心的数学工具,它们就像构建数字宇宙的原子与分子,支…...

应届本科生简历制作指南
一、找一个专业的简历模板 首先,你需要访问 Overleaf 的官方网站,也就是Overleaf, Online LaTeX Editor,进入页面后,点击注册按钮,按照提示填写相关信息来创建一个属于自己的账号,通常需要填写用户名、邮箱…...
VUE3+TS实现图片缩放移动弹窗
完整代码 使用VUE3、TS,实现将图片通过鼠标拖拽缩放以及选择缩放比例。 <template><div><el-dialogv-model"dialogVisible"title"查看图片":close-on-click-modal"false":close-on-press-escape"false"fu…...
大语言模型训练数据格式:Alpaca 和 ShareGPT
在大规模语言模型(LLM)的开发中,训练数据的质量和格式起着至关重要的作用。为了更好地理解和构建高质量的数据集,社区发展出了多种标准化的数据格式。其中,Alpaca 和 ShareGPT 是两种广泛使用的训练数据格式࿰…...
实现动态增QuartzJob,通过自定义注解调用相应方法
:::tip 动态增加Quartz定时任务,通过自定义注解来实现具体的定时任务方法调用。 ::: 相关依赖如下 <!-- 用来动态创建 Quartz 定时任务 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-start…...

PyTorch可视化工具——使用Visdom进行深度学习可视化
文章目录 前置环境Visdom安装并启动VisdomVisdom图形APIVisdom静态更新API详解通用参数说明使用示例Visdom动态更新API详解1. 使用updateappend参数2. ~~使用vis.updateTrace方法~~3. 完整训练监控示例 Visdom可视化操作散点图plot.scatter()散点图案例线性图vis.line()vis.lin…...
Qt无边框界面添加鼠标事件
在Qt中实现无边框窗口的鼠标事件处理,主要涉及窗口拖动和调整大小功能。以下是分步实现的代码示例: 1. 创建无边框窗口 首先,创建一个继承自QWidget的自定义窗口类,并设置无边框标志: #include <QWidget> #in…...

企业级爬虫进阶开发指南
企业级爬虫进阶开发指南 一、分布式任务调度系统的深度设计 1.1 架构设计原理 图表 1.2 核心代码实现与注释 分布式锁服务 # distributed_lock.py import redis import timeclass DistributedLock:def __init__(self, redis_conn):self.redis = redis_connself.lock_key = …...
Ubuntu ping网络没有问题,但是浏览器无法访问到网络
我这边是尝试清楚DNS缓存然后重新访问就可以了。 使用 resolvectl 刷新 DNS 缓存 在 Ubuntu 20.04 及更高版本中,可以使用以下命令来刷新 DNS 缓存: sudo resolvectl flush-caches 使用 systemd-resolve(适用于旧版本) 如果你…...

网络安全-等级保护(等保) 2-7 GB/T 25058—2019 《信息安全技术 网络安全等级保护实施指南》-2019-08-30发布【现行】
################################################################################ GB/T 22239-2019 《信息安全技术 网络安全等级保护基础要求》包含安全物理环境、安全通信网络、安全区域边界、安全计算环境、安全管理中心、安全管理制度、安全管理机构、安全管理人员、安…...

数据结构实验10.1:内部排序的基本运算
文章目录 一,实验目的二,实验内容1. 数据生成与初始化2. 排序算法实现(1)直接插入排序(2)二分插入排序(3)希尔排序(4)冒泡排序(5)快速…...