您的位置首页生活百科

提取windows聚焦图片作为桌面壁纸的方法

提取windows聚焦图片作为桌面壁纸的方法

的有关信息介绍如下:

提取windows聚焦图片作为桌面壁纸的方法

微软在 Windows 10 上新增了一项功能 Windows 聚焦 (Windows Spotlight),它会自动随机下载并更换锁屏界面的壁纸 (Lockscreen),让你每次打开电脑都有不一样的视觉享受。这些高清锁屏壁纸往往都很精美,很多视觉冲击力十足,非常值得收藏。但很多同学想将这些壁纸设为桌面,却不知道怎样下载保存Win10的锁屏壁纸。

打开一个文本文件,复制以下代码,保存后缀为.ps1,命名为SetWallPaperFromSpotlight.ps1,然后右键“使用powershell运行”就可以发现桌面壁纸已经被设置为了最新的图片。所有的聚焦图片都被复制到你自己的用户文件夹下的Spotlight文件夹。比如我的是在:“C:\Users\Anymake\Pictures\Spotlight”。这样你就有了一个手动提取并设置最新图片为桌面壁纸的方法。下面第二步介绍每天电脑自动设置的方法。

#将复制出来的缓存图片保存在下面的文件夹

add-type-AssemblyNameSystem.Drawing

New-Item"$($env:USERPROFILE)\Pictures\Spotlight"-ItemTypedirectory-Force;

New-Item"$($env:USERPROFILE)\Pictures\Spotlight\CopyAssets"-ItemTypedirectory-Force;

New-Item"$($env:USERPROFILE)\Pictures\Spotlight\Horizontal"-ItemTypedirectory-Force;

New-Item"$($env:USERPROFILE)\Pictures\Spotlight\Vertical"-ItemTypedirectory-Force;

#将横竖图片分别复制到对应的两个文件夹

foreach($filein(Get-Item"$($env:LOCALAPPDATA)\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets\*"))

{

if((Get-Item$file).length-lt100kb){continue}

Copy-Item$file.FullName"$($env:USERPROFILE)\Pictures\Spotlight\CopyAssets\$($file.Name).jpg";

}

foreach($newfilein(Get-Item"$($env:USERPROFILE)\Pictures\Spotlight\CopyAssets\*"))

{

$image=New-Object-comObjectWIA.ImageFile;

$image.LoadFile($newfile.FullName);

if($image.Width.ToString()-eq"1920"){Move-Item$newfile.FullName"$($env:USERPROFILE)\Pictures\Spotlight\Horizontal"-Force;}

elseif($image.Width.ToString()-eq"1080"){Move-Item$newfile.FullName"$($env:USERPROFILE)\Pictures\Spotlight\Vertical"-Force;}

}

#壁纸设置函数

functionSet-Wallpaper

{

param(

[Parameter(Mandatory=$true)]

$Path,

[ValidateSet('Center','Stretch')]

$Style='Center'

)

Add-Type@"

usingSystem;

usingSystem.Runtime.InteropServices;

usingMicrosoft.Win32;

namespaceWallpaper

{

publicenumStyle:int

{

Center,Stretch

}

publicclassSetter{

publicconstintSetDesktopWallpaper=20;

publicconstintUpdateIniFile=0x01;

publicconstintSendWinIniChange=0x02;

[DllImport("user32.dll",SetLastError=true,CharSet=CharSet.Auto)]

privatestaticexternintSystemParametersInfo(intuAction,intuParam,stringlpvParam,intfuWinIni);

publicstaticvoidSetWallpaper(stringpath,Wallpaper.Stylestyle){

SystemParametersInfo(SetDesktopWallpaper,0,path,UpdateIniFile|SendWinIniChange);

RegistryKeykey=Registry.CurrentUser.OpenSubKey("ControlPanel\\Desktop",true);

switch(style)

{

caseStyle.Stretch:

key.SetValue(@"WallpaperStyle","2");

key.SetValue(@"TileWallpaper","0");

break;

caseStyle.Center:

key.SetValue(@"WallpaperStyle","1");

key.SetValue(@"TileWallpaper","0");

break;

}

key.Close();

}

}

}

"@

[Wallpaper.Setter]::SetWallpaper($Path,$Style)

}

$filePath="$($env:USERPROFILE)\Pictures\Spotlight\Horizontal\*"

$file=Get-Item-Path$filePath|Sort-Object-PropertyLastWriteTime-Descending|Select-Object-First1

Set-Wallpaper-Path$file.FullName

#echo$file.FullName

Remove-Item"$($env:USERPROFILE)\Pictures\Spotlight\CopyAssets\*";

#pause

必须以管理员身份登录才能执行这些步骤。如果不是以管理员身份登录,则您仅能更改适用于您的用户帐户的设置。

由于windows默认的任务计划没有权限执行ps1脚本,因此首先需要用管理员运行Windows PowerShell

输入Set-ExecutionPolicy Unrestricted进行权限更改,输入Y确认

打开“任务计划程序”,方法是依次单击“控制面板”、“系统和安全性”、“管理工具”,然后双击“任务计划程序”。‌ 需要管理员权限 如果系统提示您输入管理员密码或进行确认,请键入该密码或提供确认。单击“操作”菜单,然后单击“创建任务”。配置如下:

常规:键入任务的名称比如SetWallPaperFromSpotlight和描述(可选) - 勾选“使用最高权限运行”

触发器:新建 - 选择“制定计划时” - 选择 执行时间如“7:30:00” - 选择执行周期如“每天 每隔1天发生一次” - 勾选"启用",也可以根据需要选择每小时,每半小时或者更高的频率运行脚本。

操作:新建 - 选择“启动程序” - "powershell" ,添加参数为文件路径,如"D:\code\py\SetWallPaperFromSpotlight.ps1",- 点击“确定”

所有完成就大功告成了,要检查效果的话,单机左侧的任务计划程序库,从右边找到你刚设置的SetWallPaperFromSpotlight任务,右键立即运行就可以看到效果了。