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 = "http://cn.bing.com/"
- 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 文件. 当然也可以在代码中修改.
20180508.jpg
来源: http://www.jianshu.com/p/4826a808e1a8