第一版下载图片后设为壁纸,四周都是黑黑的不好看, 所以结合本地壁纸将两张图片进行合成
只要计算一下要缩减的大小与要放置的位置
我的方法是:打开 gimp,合成两张图片,记下缩减的大小(214,214)与位置(160,160)
每次只要运行一下
python himawari8.py
源码
from PIL import Image, ImageOps, ImageDraw
from io import BytesIO
from urllib.request import Request, urlopen
from datetime import datetime, timedelta
import json
SCALE = 2
WIDTH = 1368
HEIGHT = 768
def get_info():
url = "http://himawari8-dl.nict.go.jp/himawari8/img/D531106/latest.json"
request = Request(url)
response = urlopen(request, timeout=10)
return json.loads(response.read())
def download():
png = Image.new('RGB', (550 * SCALE, 550 * SCALE))
# desktop = Image.new('RGB', (WIDTH, HEIGHT))
desktop = Image.open('/home/jianglin/Pictures/308556.png')
url_format = 'http://himawari8-dl.nict.go.jp/himawari8/img/D531106/{}d/{}/{}_{}_{}.png'
info = get_info()
# date = datetime.strptime(info['date'], '%Y-%m-%d %H:%M:%S') + timedelta(
# hours=-8)
date = datetime.strptime(info['date'], '%Y-%m-%d %H:%M:%S')
for x in range(SCALE):
for y in range(SCALE):
url = url_format.format(SCALE, 550,
date.strftime("%Y/%m/%d/%H%M%S"), x, y)
print(url)
request = Request(url)
response = urlopen(request, timeout=10)
img = Image.open(BytesIO(response.read()))
png.paste(img, (550 * x, 550 * y, 550 * (x + 1), 550 * (y + 1)))
png = circle(png)
desktop.paste(png, (160, 160), png)
desktop.save('/tmp/earth.png', "PNG")
set_background()
def circle(img):
width = SCALE * 550
height = SCALE * 550
size = (width, height)
mask = Image.new('L', size, 0)
draw = ImageDraw.Draw(mask)
draw.ellipse((3, 3, width - 3, height - 3), fill=255)
output = ImageOps.fit(img, mask.size, centering=(0.5, 0.5))
output.putalpha(mask)
output.thumbnail((214, 214), Image.ANTIALIAS)
return output
def convert():
# size = (768, 768)
# mask = Image.new('L', size, 0)
# draw = ImageDraw.Draw(mask)
# draw.ellipse((3, 3, 765, 765), fill=255)
# im = Image.open('/tmp/earth.png')
# output = ImageOps.fit(im, mask.size, centering=(0.5, 0.5))
# output.putalpha(mask)
# output.thumbnail((256, 256), Image.ANTIALIAS)
# output.save('output.png')
# output.convert("RGBA")
output = Image.open('output.png')
output.thumbnail((214, 214), Image.ANTIALIAS)
desktop = Image.open('/home/jianglin/Pictures/308556.png')
desktop.paste(output, (160, 160), output)
desktop.save('/tmp/earch.png', "PNG")
def set_background():
import os
os.system('feh --bg-scale /tmp/earth.png')
if __name__ == '__main__':
download()