选择壁纸图片

以图片或幻灯片指定一张图片或文件夹,具体操作(省略)

使用JAVA从网上下载图片

注 : 这里采用了360 图库 api

import cn.hutool.json.JSON;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Random;public class UrlUtil {//mainpublic static void main(String[] args){try {//获取壁纸URL stringString imageUrlFor360 = UrlUtil.getImageUrlFor360(5, 0, 200);//保存替换壁纸UrlUtil.saveImagePNG(imageUrlFor360,"wallpaper");//删除缓存壁纸目录UrlUtil.deleteImage("C:/Users/Administrator/AppData/Roaming/Microsoft/Windows/Themes/CachedFiles");} catch (IOException e) {e.printStackTrace();}}/*** 从360API获取图片地址* @param cid    1:每日精选  5:游戏  6:美女 9:风景*               10:视觉创意 11:明星影视 12:汽车 14:萌宠动物*               15:小清新 16:体育 22:军事 26:动漫卡通 30:情感 35:文字* @param start  起始索引* @param count  总共取值* @return* @throws IOException*/public static String getImageUrlFor360(Integer cid,Integer start,Integer count) throws IOException {URL url = new URL(String.format("http://wallpaper.apc.360.cn/index.php?c=WallPaper&a=getAppsByCategory&cid=%d&start=%d&count=%d&from=360chrome",cid,start,count));HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("GET");conn.setUseCaches(false);conn.setConnectTimeout(5000); // 请求超时5秒// 设置HTTP头:conn.setRequestProperty("Accept", "*/*");conn.setRequestProperty("User-Agent", "Mozilla/5.0 (compatible; MSIE 11; Windows NT 5.1)");// 判断HTTP响应是否200:if (conn.getResponseCode() != 200) {throw new RuntimeException("bad response");}// 获取响应内容:BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));StringBuffer sbf = new StringBuffer();String str = "";while ((str = br.readLine()) != null){sbf.append(str);}JSON parse = JSONUtil.parse(sbf.toString());Object data =parse.getByPath("data");//返回的所有图片数据,若需要全部下载,在此进行遍历即可JSONArray dataArr = JSONUtil.parseArray(data);int size = dataArr.size();//随机抽选Random random = new Random();int i = random.nextInt(size);JSONObject o = (JSONObject)dataArr.get(i);conn.disconnect();//获取壁纸图片,还有其他格式,查看json尝试return o.get("url_thumb",String.class);}//保存JPG格式public static void saveImageJPG(String imgUrl,String fileName) throws IOException {saveImage(imgUrl,fileName,"jpg");}//保存PNG格式public static void saveImagePNG(String imgUrl,String fileName) throws IOException {saveImage(imgUrl,fileName,"png");}/*** 根据网络图片地址 保存至本地* @param imgUrl* @param fileName* @param type* @throws IOException*/public static void saveImage(String imgUrl,String fileName,String type) throws IOException {URL url = new URL(imgUrl);BufferedImage read = ImageIO.read(url);FileOutputStream fileOutputStream = new FileOutputStream(String.format("你的图片目录/%s.%s",fileName,type));ImageIO.write(read,type,fileOutputStream);fileOutputStream.close();}/**
* 删除壁纸目录下图片
*/
public static void deleteImage(String imgUrl){File file = new File(imgUrl);if(file.exists() && file.isDirectory()){File[] files = file.listFiles();for (File f:files) {f.deleteOnExit();}file.delete();}}
}

JSON采用了hutool,也可以用coogle和alibaba的,逻辑都是一致的

运行后发现图片已经下载下来却没有切换壁纸,是因为windows中注册表信息没有改变,java没有直接操作系统注册表的操作,于是我们使用cmd命令进行操作。

首先先将程序打成可执行jar包

修改壁纸注册表

@echo off
:: 开始获取管理员权限,要使用管理员账号登录
setlocal
set uac=~uac_permission_tmp_%random%
md "%SystemRoot%\system32\%uac%" 2>nul
if %errorlevel%==0 ( rd "%SystemRoot%\system32\%uac%" >nul 2>nul ) else (echo set uac = CreateObject^("Shell.Application"^)>"%temp%\%uac%.vbs"echo uac.ShellExecute "%~s0","","","runas",1 >>"%temp%\%uac%.vbs"echo WScript.Quit >>"%temp%\%uac%.vbs""%temp%\%uac%.vbs" /fdel /f /q "%temp%\%uac%.vbs" & exit )
endlocal
::  切换至jar包路径,运行jar下载 替换壁纸图片
D:
cd 你的路径
java -jar jar包名称
::  修改注册表信息, 有时候修改频繁 壁纸依旧切换不了
reg add "hkcu\control panel\desktop" /v wallpaper /d "壁纸全路径" /f
RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters
echo. & pause

注:注意替换地址

  • 如果使用幻灯片,就可以自然等切换时间进行更换,如果是想直接替换,就采用修改注册表的方式
  • 我这里用的JDK-8 所以没有使用httpclient,也不知道高版本是否有自带的JSON工具,大家可以自行尝试体会

Java 切换win10壁纸相关推荐

  1. Java切换电脑壁纸

    思路就是调用cmd命令修改壁纸注册表和JNA更新壁纸显示,代码片段很简单 private interface MyUser32 extends StdCallLibrary {MyUser32 INS ...

  2. github电脑壁纸_GitHub - jadepeng/bing-wallpaper: Bing每日壁纸,自动获取Bing的精美图片设置为壁纸,并且支持随机切换历史壁纸,查看壁纸故事...

    Bing每日壁纸 发布一个开源小软件,Bing每日壁纸. 该小软件可以自动获取Bing的精美图片设置为壁纸,并且支持随机切换历史壁纸,查看壁纸故事. 欢迎大家下载使用,点star!有问题请留言或者提i ...

  3. github电脑壁纸_GitHub - githubtaotao/bing-wallpaper: Bing每日壁纸,自动获取Bing的精美图片设置为壁纸,并且支持随机切换历史壁纸,查看壁纸故事...

    Bing每日壁纸 发布一个开源小软件,Bing每日壁纸. 该小软件可以自动获取Bing的精美图片设置为壁纸,并且支持随机切换历史壁纸,查看壁纸故事. 欢迎大家下载使用,点star!有问题请留言或者提i ...

  4. JDK14环境变量配置,JDK版本切换(Win10)

    JDK14环境变量配置,JDK版本切换(Win10) 昨天想要试试新的JDK,结果出了一些小问题特此记录 JDK切换之后要重启电脑!!! JDK 8 的环境变量配置 首先我是放在了环境变量中的用户变量 ...

  5. ubuntu16.04自动切换桌面壁纸

    一.描述 让办公电脑桌面自动更换壁纸是一个很常见的需求,虽然不少这方面的小软件可以实现这个功能.事实上,在基于Gnome的桌面系统中,我们可以不需要借助任何第三方软件的帮助来让我们的桌面自动更换壁纸. ...

  6. AutoHotkey循环切换Win10或则Win11任务视图的多个虚拟桌面(切换桌面)

    AutoHotkey循环切换Win10或则Win11任务视图的多个虚拟桌面(切换桌面) Win10可以创建多个虚拟桌面,通过快捷键切换: Win+Tab:打开任务视图 Win+Ctrl+D:新建虚拟桌 ...

  7. java实现windows壁纸自动下载与切换

    壁纸风波 许多有内涵的朋友都喜欢将自己的电脑桌面壁纸设置为美女图片,并且隔一段时间,自动更换,看起来十分炫酷.的确,用过windows的朋友们都知道,windows的个性化设置里面,可以将壁纸设置幻灯 ...

  8. win10壁纸不能幻灯片放映_有个性,做不同,10分钟让你的Win10酷起来!

    大家好,我是小诸葛,一个喜欢捣鼓电脑的小机灵鬼儿,如果关注电脑 手机信息,可以关注小诸葛! 小诸葛 如何把Win10界面改成你喜欢的样子? 跟着我,动动手指就可以让你的Win10换个模样! 1.二次元 ...

  9. 【JAVA】Win10实现Java文件的开机自启动(附详细步骤)

    问题描述 随着入了Win10的坑,发现它最不能让人忍受的一点就是强制系统更新,而且系统更新之频繁,简直不能忍.这就导致,对于一些想要一直运行的Java文件,就会造成每次系统更新之后的重启导致Java文 ...

最新文章

  1. 冒泡排序--通过冒泡算法让数组中最大的值成为数组中最后一个值
  2. 案例:返回固定页面的http服务器
  3. 在ABAP里取得一个数据库表记录数的两种方法
  4. 线程监视器模型_为什么模型验证如此重要,它与模型监视有何不同
  5. leetcode707:设计链表(增删差)
  6. 关于计算机组件游戏,Windows系统运行库/游戏运行库组件怎么补全?
  7. vue spa页面在调用微信jssdk刷新才成功?
  8. 城市大脑 —— 数据重塑城市未来
  9. java二手书交易系统_基于Java的二手图书交易系统后台设计与实现.doc
  10. 勒索病毒是什么?防勒索病毒我们该怎么做?
  11. (附源码)springboot嘉应房地产公司质量管理系统 毕业设计 453100
  12. 单相全控桥有源逆变电路matlab仿真,单相桥式全控整流与有源逆变电路的MATLAB仿真设计...
  13. 职业规划-三大职业生涯阶段
  14. 最近收集的一些酷炫的UI界面设计
  15. Kubernetes 学习总结(3) Manifests
  16. Python实现头像换脸(AI换脸)
  17. 2021大连高考成绩查询,2021年大连高考各高中成绩及本科升学率数据排名及分析...
  18. web 页面的提交方式
  19. 流量并不仅仅只是存在于互联网时代,更重要的是一种模式
  20. 新手小白初学Java(一)一些简单知识

热门文章

  1. 用科学计算机求arctan,计算器arctan怎么按
  2. 中国联通智能路侧单元白皮书
  3. 【spark】RDD-API
  4. ps导出的gif图片不能动,或是只能动一次的解决办法
  5. 水星路由器短信认证配置流程
  6. 隧道技术(Tunneling)
  7. CNN表情识别系统制作(1)----fer2013人脸表情数据集简介
  8. 数据库系统概论练习3
  9. python怎么利用数据成像_使用Python对大脑成像数据进行可视化分析
  10. 计算机启动时蓝屏后自动重起,电脑蓝屏_处理电脑开机蓝屏自动重启