
这是MacOS的简单控制台应用程序,可以创建MacOS Mojave中引入的动态壁纸。在这里,您可以观看动态壁纸的工作原理。另外,您可以在以下文章中阅读有关动态壁纸的更多信息:
下面您可以下载准备好的动态壁纸:
地球视图(下载) 
Cyberpunk 2077(下载) 
您需要安装最新的Xcode(10.2)和Swift 5。
打开终端并运行以下命令。
brew tap mczachurski/wallpapper
brew install wallpapper打开终端并运行以下命令。
$ git clone https://github.com/mczachurski/wallpapper.git
$ cd wallpapper
$ swift build --configuration release
$ sudo cp .build/release/wallpapper /usr/local/bin
$ sudo cp .build/release/wallpapper-exif /usr/local/bin如果您在版本4.1中使用了Swift,请编辑Package.swift文件,然后将Swift版本(在第一行)中放置。
另外,您可以使用build.sh脚本构建(它使用swiftc而不是Swift CLI)。
$ git clone https://github.com/mczachurski/wallpapper.git
$ cd wallpapper
$ ./build.sh
$ sudo cp .output/wallpapper /usr/local/bin
$ sudo cp .output/wallpapper-exif /usr/local/bin现在,在控制台中您可以运行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就这样。现在,您可以构建自己的动态壁画。
如果在安装的快速构建部分中遇到错误,请尝试从App Store下载整个Xcode IDE(不仅仅是工具)。然后运行
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer 并再次运行安装命令。
如果您现在完成了上述命令,则可以构建动态墙纸。这真的很容易。首先,您必须将所有图片放入一个文件夹中,然后在同一文件夹中使用图片的描述创建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文件后将可见)。只有一个文件可以是主要文件。isForLight如果用户选择“ Light(static)”壁纸时将显示true图片isForDark如果用户选择“黑暗(静态)”壁纸时将显示true图片altitude - 是太阳和观察者的本地视野之间的角度。azimuth - 这是围绕地平线的太阳的角度。要计算适当的高度和方位角,您可以使用wallpapper-exif应用程序或网页:https://keisan.casio.com/exec/system/1224682277。在网页中,您必须放置照片和日期的位置。然后,系统为您生成了整天的高度和太阳方位角。
对于基于OS时间json文件的墙纸,必须具有下面的片段上的结构。
[
{
"fileName" : " 1.png " ,
"isPrimary" : true ,
"isForLight" : true ,
"time" : " 2012-04-23T10:25:43Z "
},
{
"fileName" : " 2.png " ,
"time" : " 2012-04-23T14:32:12Z "
},
{
"fileName" : " 3.png " ,
"time" : " 2012-04-23T18:12:01Z "
},
{
"fileName" : " 4.png " ,
"isForDark" : true ,
"time" : " 2012-04-23T20:10:45Z "
}
]特性:
fileName - 图片文件名的名称(您可以将同一文件用于几个节点)。isPrimary有关主要图像的信息(创建heic文件后将可见)。只有一个文件可以是主要文件。isForLight如果用户选择“ Light(static)”壁纸时将显示true图片isForDark如果用户选择“黑暗(静态)”壁纸时将显示true图片time - 更改墙纸的时间(最重要的是小时)。对于基于操作系统的壁纸设置(Light/Dark),我们必须准备更简单的JSON文件,我们只需使用两个图像(一个用于光,一个用于深色主题)。
[
{
"fileName" : " 1.png " ,
"isPrimary" : true ,
"isForLight" : true
},
{
"fileName" : " 2.png " ,
"isForDark" : true
}
]特性:
fileName - 图片文件名的名称。isPrimary有关主要图像的信息(创建heic文件后将可见)。只有一个文件可以是主要文件。isForLight如果用户使用光主题时将显示true图像isForDark如果用户使用深色主题时将显示true图像当您拥有json文件和所有图片时,您可以生成heic文件。您必须运行以下命令:
wallpapper -i wallpapper.json您应该有一个新文件: output.heic 。将此文件设置为新墙纸,并享受您自己的动态墙纸!
您可以从现有的heic文件中提取元数据。您必须运行以下命令:
wallpapper -e Catalina.heic元数据应在控制台上打印为输出。
还可以提取并保存整个plist文件:
wallpapper -e Catalina.heic -o output.plist如果您的照片包含GPS EXIF元数据和创建时间,则可以使用wallpapper-exif应用程序来生成带有太阳altitude和azimuth的json文件。示例应用程序用法:
$ wallpapper-exif 1.jpeg 2.jpeg 3.jpeg应在控制台上以输出作为输出产生json 。
Sun计算是根据Vladimir Agafonkin(@mourner)创建的JavaScript库创建的。