原文:https://dy.bosslib.com/diy/
1.了解動(dòng)態(tài)桌面壁紙
當(dāng)macOS 10.14發(fā)布后链瓦,會(huì)發(fā)現(xiàn)系統(tǒng)帶有動(dòng)態(tài)桌面壁紙,設(shè)置后,我們的桌面背景將隨著一天從早上、到下午异袄、再到晚上的推移而發(fā)生微妙的變化。
雖然有些軟件也有類似的動(dòng)態(tài)變化效果玛臂,但是在新系統(tǒng)中默認(rèn)的HEIC格式的動(dòng)態(tài)壁紙?bào)w驗(yàn)更好烤蜕。
(1)HEIC格式的文件更小、圖像更清晰迹冤;
(2)由于晨昏變化隨著四季讽营、地理位置并非一成不變,如果全年都按照一個(gè)節(jié)拍切換壁紙叁巨,其效果在絕大數(shù)日子里都將跟真實(shí)景象不同步斑匪。而Mojave的動(dòng)態(tài)桌面,可以真正做到與當(dāng)?shù)氐墓庹胀阶兓嫔住@硐肭闆r下,切換的節(jié)奏與太陽(yáng)運(yùn)動(dòng)狡蝶、四季各不相同庶橱,并且根據(jù)用戶的地理位置和日期,有選擇地跳過(guò)一些不符合實(shí)際情況的照片贪惹。
2.動(dòng)態(tài)桌面壁紙?jiān)?/h2>
macOS Mojave動(dòng)態(tài)桌面壁紙苏章,是以太陽(yáng)方位為標(biāo)準(zhǔn),將對(duì)應(yīng)的壁紙文件封裝到heic文件中奏瞬。
(1)每套桌面壁紙包含16張靜態(tài)圖片(可以更多或更少)枫绅,1個(gè)記錄圖片與太陽(yáng)方位對(duì)應(yīng)關(guān)系的json文件。解析系統(tǒng)中壁紙文件信息如下:
<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文件中珍昨,每張圖片都標(biāo)記了對(duì)應(yīng)的太陽(yáng)方位县耽,即高度角(Altitude:太陽(yáng)與地平線的夾角)和方位角(Azimuth:太陽(yáng)按順時(shí)針?lè)较蚱x正北的角度),通過(guò)這兩個(gè)值確定太陽(yáng)在天體中的位置镣典。其關(guān)系圖如下:
(3)壁紙運(yùn)行時(shí)兔毙,系統(tǒng)將根據(jù)用戶的位置和時(shí)間計(jì)算太陽(yáng)的實(shí)際方位,并與壁紙中標(biāo)記的信息對(duì)比兄春,展示最接近的壁紙圖片澎剥。
3.動(dòng)手做一個(gè)HEIC的動(dòng)態(tài)壁紙
在github上,開(kāi)發(fā)者已開(kāi)發(fā)了命令行工具赶舆,快速的制作heic動(dòng)態(tài)桌面壁紙哑姚。原文:https://github.com/mczachurski/wallpapper?趾唱。
3.1準(zhǔn)備環(huán)境
(1)使用macOS的電腦。
(2)安裝了最新的XCode和Swift蜻懦。
3.2.安裝軟件包
打開(kāi)終端工具甜癞,安裝wallpapper軟件包
3.2.1.Homebrew方式安裝
brew tap mczachurski/wallpapper
brew install wallpapper
3.2.2.普通安裝
自行確定好一個(gè)安裝目錄位置,進(jìn)入進(jìn)行安裝宛乃。
? ? 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"來(lái)測(cè)試悠咱,如果出現(xiàn)如下類似信息表示安裝成功。
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.開(kāi)始制作
3.3.1.Solar太陽(yáng)坐標(biāo)
對(duì)于跟隨太陽(yáng)坐標(biāo)變化的動(dòng)態(tài)壁紙征炼,json文件必須具有類似下面的結(jié)構(gòu)析既。
準(zhǔn)備文件夾,將圖片放在文件夾中谆奥,并且同級(jí)目錄下創(chuàng)建json文件眼坏,結(jié)構(gòu)如下:
[
? {
? ? "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
? }
]
參數(shù)說(shuō)明:
fileName: 圖片名稱
isPrimary: 是否是主圖,其在創(chuàng)建heic文件后可見(jiàn)酸些。一個(gè)heic文件中只有一個(gè)主圖宰译。
isForLight: 如果用戶選擇“Light模式(靜態(tài))”壁紙時(shí),將顯示該圖片魄懂,也只能一張?jiān)O(shè)置為true沿侈,可不設(shè)置。
isForDark: 如果用戶選擇“Dark模式(靜態(tài))”壁紙時(shí)市栗,將顯示該圖片缀拭,也只能一張?jiān)O(shè)置為true,可不設(shè)置填帽。
altitude: 太陽(yáng)的高度
azimuth: 太陽(yáng)繞地平線的角度
altitude和azimuth可以在 https://keisan.casio.com/exec/system/1224682277 進(jìn)行計(jì)算蛛淋,你上傳一張你當(dāng)?shù)嘏臄z的圖片,可以查看圖片的太陽(yáng)信息篡腌,也可以看到我們所在地的全部時(shí)刻表與太陽(yáng)方位的對(duì)應(yīng)關(guān)系褐荷。如果使用apple手機(jī),安裝SkyGuide等天文APP也可以查詢太陽(yáng)方位哀蘑。
3.3.2.Time系統(tǒng)時(shí)間
對(duì)于基于macOS系統(tǒng)時(shí)間變化的壁紙诚卸,所使用的json結(jié)構(gòu)如下:
[
? ? {
? ? ? ? "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"
? ? }
]
參數(shù):
fileName: 圖片名稱
isPrimary: 是否是主圖,其在創(chuàng)建heic文件后可見(jiàn)绘迁。一個(gè)heic文件中只有一個(gè)主圖合溺。
isForLight: 如果用戶選擇“Light模式(靜態(tài))”壁紙時(shí),將顯示該圖片缀台,也只能一張?jiān)O(shè)置為true棠赛,可不設(shè)置。
isForDark: 如果用戶選擇“Dark模式(靜態(tài))”壁紙時(shí),將顯示該圖片睛约,也只能一張?jiān)O(shè)置為true鼎俘,可不設(shè)置。
time: 壁紙變化的時(shí)間(重點(diǎn)是整時(shí))辩涝。
3.3.3.Apperance系統(tǒng)外觀
對(duì)于基于macOS系統(tǒng)外觀設(shè)置(Light/Dark)的壁紙贸伐,我們準(zhǔn)備的json文件更加簡(jiǎn)單,只需要使用2個(gè)圖像怔揩,1個(gè)用于Light模式捉邢,1個(gè)用戶Dark模式。
[
? ? {
? ? ? ? "fileName": "1.png",
? ? ? ? "isPrimary": true,
? ? ? ? "isForLight": true
? ? },
? ? {
? ? ? ? "fileName": "2.png",
? ? ? ? "isForDark": true
? ? }
]
參數(shù):
fileName: 圖片名稱
isPrimary: 是否是主圖商膊,其在創(chuàng)建heic文件后可見(jiàn)伏伐。一個(gè)heic文件中只有一個(gè)主圖。
isForLight: 如果用戶選擇“Light模式(靜態(tài))”壁紙時(shí)晕拆,將顯示該圖片藐翎。
isForDark: 如果用戶選擇“Dark模式(靜態(tài))”壁紙時(shí),將顯示該圖片实幕。
3.4.生成HEIC文件
當(dāng)準(zhǔn)備好圖片和json文件后吝镣,進(jìn)入該目錄,執(zhí)行以下命令即可生成HEIC文件茬缩。
wallpapper -i wallpapper.json
我們就能得到HEIC文件赤惊,然后設(shè)置為我們系統(tǒng)的桌面壁紙吧!