600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > python实现动态壁纸_Python编程从0到1(每天把Bing背景设置为桌面)

python实现动态壁纸_Python编程从0到1(每天把Bing背景设置为桌面)

时间:2024-07-07 20:06:54

相关推荐

python实现动态壁纸_Python编程从0到1(每天把Bing背景设置为桌面)

Bing背景特别漂亮,用脚本自动下载图片,并设置为桌面。

把图片说明,用水印写在图片上。

1.爬取图片代码

#!/usr/bin/python3

# ubuntu设置动态bing壁纸

# 安装PIL库 pip install Pillow

from PIL import Image, ImageDraw, ImageFont

import requests

import os, re, time

import platform

is_windows = False

if -1 != platform.platform().upper().find('WINDOWS'):

is_windows = True

if not is_windows:

save_dir = "/home/leon/pic/wallpaper/bing/"

else:

save_dir = "D:\\bing\\"

def set_desktop(pic_path):

cmd = "gsettings set org.gnome.desktop.background picture-uri file:" + pic_path

# 设置壁纸

ret = os.system(cmd)

if ret != 0:

print("os.system failed, now exit")

exit(-1)

# windows设置壁纸

if is_windows:

import win32gui,win32con,win32api

def set_desktop_windows(imagepath):

k=win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control Panel\\Desktop",0,win32con.KEY_SET_VALUE)

win32api.RegSetValueEx(k,"WallpaperStyle",0,win32con.REG_SZ,"2")#2拉伸适应桌面,0桌面居中

win32api.RegSetValueEx(k,"TileWallpaper",0,win32con.REG_SZ,"0")

win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER,imagepath,1+2)

#获取今天的图片的url和copyright信息

def get_bing_info():

base_url = "/"

query_url = "HPImageArchive.aspx?format=js&idx=0&n=1"

r = requests.get(base_url + query_url)

image_url = base_url + r.json()["images"][0]["url"]

copyright = r.json()["images"][0]["copyright"]

copyright = re.sub(r'\(.*\)', '', copyright);

print(copyright)

return (image_url, copyright)

#下载图片

def down_pic(pic_url, save_dir):

t = time.localtime(time.time())

image_name = "{}{:0>2}{:0>2}.jpg".format(t.tm_year, t.tm_mon, t.tm_mday)

# image_name = re.sub(r'.*/', '', pic_url)

save_path = save_dir + image_name

print(save_path)

r = requests.get(pic_url)

file = open(save_path, "wb")

file.write(r.content)

file.close()

return save_path

#添加水印

def add_watermark(path, text):

new_path = path + ".watermark"

cmd = "convert {0} -font 文泉驿微米黑 -pointsize 30 -draw \"gravity south fill black text 0,72 '{1}' fill white text 1,71 '{1}' \" {2}".format(path, text, new_path)

#print(cmd)

os.system(cmd)

os.system("mv {} {}".format(new_path, path))

#通过python的PIL库添加水印

def add_watermark_by_PIL(path, text):

img = Image.open(path)

mode = img.mode

img_w, img_h = img.size

font_size = int(img_h / 35)

if len(mode) == 1: # L, 1

white = (255)

black = (0)

if len(mode) == 3: # RGB

white = (255, 255, 255)

black = (0,0,0)

if len(mode) == 4: # RGBA, CMYK

white = (255, 255, 255, 255)

black = (0,0,0,0)

# 计算text长度,好让文字居中

if not is_windows:

# 字体可能要改

# linux查看支持的汉字字体 # fc-list :lang=zh

try:

ft = ImageFont.truetype("DroidSansFallbackFull.ttf", font_size)

except:

ft = ImageFont.truetype("wqy-microhei.ttc", font_size)

else:

ft = ImageFont.truetype("C:\\Windows\\Fonts\\simkai.ttf", font_size) #楷体

font_w, font_h = ft.getsize(text)

start_px = int((img_w - font_w) / 2)

#开始添加水印,同时添加黑白水印,处理深色和浅色背景问题

draw = ImageDraw.Draw(img)

if is_windows:

margin_bottom = 60

else:

margin_bottom = 20

draw.text((start_px + 2, img_h - font_size - margin_bottom + 2), text, black, font=ft)

draw.text((start_px, img_h - font_size - margin_bottom), text, white, font=ft)

img.save(path)

def main():

url, copyright = get_bing_info()

path = down_pic(url, save_dir)

if not is_windows:

add_watermark(path, copyright)

set_desktop(path)

else:

add_watermark_by_PIL(path, copyright)

set_desktop_windows(path)

main()

2.运行脚本

写一个bat文件。

C:\ProgramData\Anaconda3\python.exe C:\change_desktop.py %*

其中 'C:\ProgramData\Anaconda3\python.exe' 为python路径,'C:\change_desktop.py'为脚本路径。

3.自动启动

将bat文件放到开始菜单的启动下即可。

注:如果运行报错,需要在D盘下建一个bing文件。当然也可以在代码中修改。

0508.jpg

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。