如何自己动手制作macOS系统Heic动态壁纸

原文:https://dy.bosslib.com/diy/

1.了解动态桌面壁纸

当macOS 10.14发布后,会发现系统带有动态桌面壁纸,设置后,我们的桌面背景将随着一天从早上、到下午、再到晚上的推移而发生微妙的变化。

虽然有些软件也有类似的动态变化效果,但是在新系统中默认的HEIC格式的动态壁纸体验更好。

(1)HEIC格式的文件更小、图像更清晰;

(2)由于晨昏变化随着四季、地理位置并非一成不变,如果全年都按照一个节拍切换壁纸,其效果在绝大数日子里都将跟真实景象不同步。而Mojave的动态桌面,可以真正做到与当地的光照同步变化。理想情况下,切换的节奏与太阳运动、四季各不相同,并且根据用户的地理位置和日期,有选择地跳过一些不符合实际情况的照片。

2.动态桌面壁纸原理

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)壁纸运行时,系统将根据用户的位置和时间计算太阳的实际方位,并与壁纸中标记的信息对比,展示最接近的壁纸图片。

3.动手做一个HEIC的动态壁纸

在github上,开发者已开发了命令行工具,快速的制作heic动态桌面壁纸。原文:https://github.com/mczachurski/wallpapper 。

3.1准备环境

(1)使用macOS的电脑。

(2)安装了最新的XCode和Swift。

3.2.安装软件包

打开终端工具,安装wallpapper软件包

3.2.1.Homebrew方式安装

brew tap mczachurski/wallpapper

brew install wallpapper

3.2.2.普通安装

自行确定好一个安装目录位置,进入进行安装。

    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

3.2.3.确定是否安装成功

我们可以在终端中输入"wallpaper -h"来测试,如果出现如下类似信息表示安装成功。

wallpapper: [command_option] -i inputFile

Command options are:

-h         show this message and exit

-o         output file name (default is 'output.heic')

-i         input file name, json file with wallpaper description

3.3.开始制作

3.3.1.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也可以查询太阳方位。

3.3.2.Time系统时间

对于基于macOS系统时间变化的壁纸,所使用的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文件后可见。一个heic文件中只有一个主图。

isForLight: 如果用户选择“Light模式(静态)”壁纸时,将显示该图片,也只能一张设置为true,可不设置。

isForDark: 如果用户选择“Dark模式(静态)”壁纸时,将显示该图片,也只能一张设置为true,可不设置。

time: 壁纸变化的时间(重点是整时)。

3.3.3.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模式(静态)”壁纸时,将显示该图片。

3.4.生成HEIC文件

当准备好图片和json文件后,进入该目录,执行以下命令即可生成HEIC文件。

wallpapper -i wallpapper.json

我们就能得到HEIC文件,然后设置为我们系统的桌面壁纸吧!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容