
Это простое применение консоли для 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 Если вы используете Swift в версии 4.1, пожалуйста, отредактируйте файл 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Вот и все. Теперь вы можете построить свои собственные динамические обои.
Если вы получите ошибку во время части установки Swift, попробуйте загрузить весь IDE XCode (не только инструменты) из магазина приложений. Затем беги
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 - если true картина будет отображаться, когда пользователь выберет "Light (Static)" обои "isForDark - Если true Picture отобразится, когда пользователь выбрал «Dark (статический)» обои.altitude - это угол между солнцем и местным горизонтом наблюдателя.azimuth - это угол солнца вокруг горизонта. Для расчета надлежащей высоты и азимута вы можете использовать приложение или веб-страницу wallpapper-exif : https://keisan.casio.com/exec/system/1224682277. На веб -странице вы должны разместить место, где вы делаете фотографию и дату. Затем система генерирует для вас высоту и азимута солнца в течение всего дня.
Для обоев, основанных на времени OS json File, должна иметь структуру, подобную SNIPPET.
[
{
"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 - если true картина будет отображаться, когда пользователь выберет "Light (Static)" обои "isForDark - Если true Picture отобразится, когда пользователь выбрал «Dark (статический)» обои.time - время, когда обои будут изменены (наиболее важным является час).Для обоев, основанных на настройках Apperance OS (Light/Dark), мы должны подготовить гораздо более простой файл JSON, и мы должны использовать только два изображения (одно для света и одно для темной темы).
[
{
"fileName" : " 1.png " ,
"isPrimary" : true ,
"isForLight" : true
},
{
"fileName" : " 2.png " ,
"isForDark" : true
}
]Характеристики:
fileName - Имя Имя файла изображения.isPrimary - Информация о изображении, которое является основным изображением (оно будет видно после создания файла heic ). Только один из файлов может быть первичным.isForLight - если true Picture отобразится, когда пользователь использует тему LightisForDark - Если true Picture отобразится, когда пользователь использует темную тему Когда у вас есть файл 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 для генерации файла json с altitude солнца и azimuth . Пример использования приложения:
$ wallpapper-exif 1.jpeg 2.jpeg 3.jpeg json должен быть произведен в качестве вывода на консоли.
Расчеты Sun были созданы на основе библиотеки JavaScript, созданной Владимиром Агафонкином (@Mourner).