用途与实际影响
这项功能怎样使用
为什么需要它
只把图片路径指向开发或临时目录,后续搬家容易失效;桌面和锁屏又是两处独立设置。脚本保存已选图、明确分别设置与核对结果,避免看到一处正确就以为两处都好了。
举个实际例子
“把已选好的图设为这台电脑的桌面和锁屏背景,保留现在的设置方便恢复。”工具先保存原设置,处理本人选定的目标,再核对 Windows 是否接受;最后还要看实际桌面和锁屏的裁剪效果,不能只凭设置写入成功就说画面已经合适。
最后我会得到什么
分别告诉你桌面和锁屏是否已使用选定图片,哪一处仍有差异或报错。原设置记录保留,必要时可恢复;实际锁屏的裁剪与观感仍要打开画面检查。
正常工作
各屏幕和锁屏都已引用正确图片时,重复操作不会再改一次。
发现问题
Windows个性化设置或其他软件改变了图片、显示模式时,检查会指出差异;本人选择恢复后再重新设置。
暂不可用
图片缺失、内容不符或Windows接口不可用时保留错误与原设置,不生成替代图,也不锁定电脑。
从哪里开始
先按选图清单确认图片,运行 scripts/Set-WindowsBackground.ps1 -Action Verify 查看现状;要应用时显式使用 -Action Apply。
需要准备什么
- 想使用项目里的哪张图片
- 只检查还是应用到桌面或锁屏
- 需要时是否恢复原图
从开始到拿到结果
- 1
先确认选定图片和现状
工具核对图片有没有变化,并分别查看当前桌面与锁屏;只检查时不改设置。
- 2
明确应用才修改
先留下原设置,再把图片放在持久位置,只更新有差异的桌面或锁屏。
- 3
回看两处画面
分别核对结果;想换回原图时按保存记录在 Windows 设置中选择。
技术实现与依据
这里保留实现、关键条件、精确入口、历史记录和验证结果。
本机接口回读通过关键规则与设计选择
只恢复图片无需安装泡泡或.NET SDK,64位Windows自带PowerShell即可。
恢复新机器使用项目原图;原电脑的before-first-apply记录只用于撤回原电脑,不是新机器的设置来源。
脚本不会在后台争抢。以后主动打开Wallpaper Engine的覆盖系统壁纸/锁屏选项可能再改原生图片,需要时按需重跑。
本模块用到的名词
- 雨林黑猫 · 更绿版
- 已选用的3840×2160电脑底图,由1672×941生成原图放大;是sRGB SDR,不宣称恢复了未知细节、HDR或10位输出。
- 持久图片副本
- Windows显示文件复制到用户图片目录的EmeraldVeil子目录;前像与原图备份仍在%LOCALAPPDATA%\EmeraldVeil\windows-background。Windows引用持久图片而非项目目录。
- 解码后比较
- Windows可能重新编码锁屏缓存,脚本比较画面而非只比缓存文件字节,避免编码变化被误判为换图。
专业定义
恢复雨林黑猫4K底图,各显示器和锁屏逐项核对,并保留原有图片记录。
解决什么
接口设置可能只成功一部分;脚本不是桌面与锁屏的原子事务。出现系统错误应按具体失败位置核对,保留已保存的原图记录后再处理。
当前怎样实现
- 读取assets/windows-background.json核对PNG的SHA-256;PowerShell 7或32位宿主转到64位Windows PowerShell,使用系统现成WinRT投影。
- 桌面统一通过IDesktopWallpaper设置和读取共同底图,清除每屏旧图并核对当前及Windows记忆中的离线显示器;逐屏设置后再次设共同路径,避免单屏覆盖清空共同引用。不再把冗余SystemParametersInfoW设置作为前置条件。desktop.monitors逐项报告连接状态、图片引用与matches;锁屏使用Windows.System.UserProfile.LockScreen.SetImageFileAsync。它不更改显示器连接、编号或排列。
- 三个每用户选择器BackgroundType、RotatingLockScreenEnabled、SlideshowEnabled都明确设为DWORD 0,以采用固定图片。
- 首次应用前保存原桌面图(可读取时)、每屏选图、原锁屏图与选择器状态;已有记录仅补入尚未采集的每屏设置,不覆盖原恢复信息。临时写入再移动前像文件,图片引用必须在持久目录且源哈希匹配。
- 锁屏图像检查宽高比后缩为128×72比较RGB均值,容差为3;本轮实际平均误差0。只有确有漂移才用带哈希前缀和新GUID的文件名重设,避开缓存旧图。
执行流程
- 1
读取选图与清单,先验证原图哈希。
- 2
读取两处图片、固定模式及锁屏解码画面。
- 3
Apply(应用图片)且有漂移时保存原始记录,补正确模式,复制并校验新持久副本。
- 4
分别修改需要变化的桌面或锁屏,再完整回读;Verify只执行读取。
- 5
打印结果和changedSurfaces;不符合返回1,系统错误直接报告。
边界
- 仅需保留脚本、选图清单、PNG三个文件即可进行静态恢复;不依赖原机路径或Wallpaper Engine。
- 不更改Wallpaper Engine,不启停泡泡,不锁定电脑,也不增加自启、服务或任务。
- 原状态记录不是自动Restore命令;原壁纸与锁屏通过Windows设置按记录选回。
失败与恢复
- 图像、固定模式或持久引用发生漂移
- Verify返回drift/1,不自动改图;Apply(应用图片)会按需要重设对应表面。
- 锁屏缓存只是重新编码
- 通过解码画面容差比较判断,不因为缓存字节不同直接判失败。
- 磁盘写入或系统API失败
- 报出实际错误;已成功的选择器或桌面修改可能保留,不能称整次自动回滚。原图记录仍用于核对和手动恢复。
真实入口
docs/windows-background.md恢复、换机、原图和现有应用边界。
scripts/Set-WindowsBackground.ps1真实设置与只读回读实现。
assets/windows-background.json / assets/verdant-rain-4k.png选图、参数与完整静帧。
如何验证
- 本轮Verify为verified,desktop/lockScreen均true、锁屏平均像素差0,没有修改表面。
- 脚本会在内容、模式和路径都正确时跳过;它不会主动进入锁屏。
- 跨机操作与真实锁屏目视需分别做,本轮未重做;不能用接口结果推定观感完全一致。
与其他模块的关系
只管理Windows原生静态图片。Wallpaper Engine可继续显示自己的动画,泡泡专属背景不从此入口加载。
