使用实时更新的卫星照片作为你的桌面壁纸!

2015-12-06 21:15:13 +08:00
 bitdust

妈妈说过在标题栏加感叹号会显得很 low ,但是这的确是我发在 V2EX 第一个项目,不得不激动下。

这是一个 C#项目,可以抓取日本的向日葵 8 号卫星每十分钟更新的的地球照片作为桌面壁纸,逼格爆炸。

效果图如下:

项目地址: https://github.com/bitdust/EarthLiveSharp
使用攻略: https://github.com/bitdust/EarthLiveSharp/issues/3

欢迎大家多提宝贵意见!

24692 次点击
所在节点    分享创造
142 条回复
bdbai
2015-12-07 18:24:49 +08:00
@bitdust MVC 适合普通应用,你这个程序的场景并不适合。学做 Windows 应用开发建议上 UWP ,原生的 MVVM 。
me521333
2015-12-07 19:38:23 +08:00
这个时间上确实会出现反复额,上面说的那个获取新图片自动设置壁纸就挺好。
那个,我真的去掉桌面图标盯了十秒,结果我觉得眼睛已经花了分辨不出来地球是不是动了,虽然它真的动了。。。
bitdust
2015-12-07 22:28:39 +08:00
@me521333
即将更新~
anguslg
2015-12-08 10:42:02 +08:00
@uuair 给你个曲线救国的方案,使用 dropbox 同步卫星图片, mac 上设置这个同步目录为桌面背景。前提是你得有台一直开机到 windows 23333😂
0xffff
2015-12-08 17:37:03 +08:00
好奇那个实时高清卫星图是怎么抓取的。有 API ?还是自己写脚本啊。 @bitdust
endpoint
2015-12-08 17:53:29 +08:00
一直都只有一张图片- -
bitdust
2015-12-08 18:09:19 +08:00
@0xffff 留个邮箱,我给你发接口。(最好在 github 留言,这样我可以稍后把你的邮箱信息屏蔽掉,防止隐私泄露)
@endpoint 图片每 10 分钟更新一次,可以耐性等等。不行的话贴下 trace.log 信息。而且这两天我会发出来更稳定新版本。
pepsin
2015-12-08 18:30:04 +08:00
```
require 'net/http'
def get_url x, y
str = "http://himawari8-dl.nict.go.jp/himawari8/img/D531106/20d/550/2015/12/08/050000_#{x}_#{y}.png"
end

def run
20.times do |x|
20.times do |y|
url = get_url x, y
uri = URI.parse(url)
req = Net::HTTP::Get.new uri.path
res = Net::HTTP.start(uri.host, uri.port, use_ssl: false) do |http|
http.request req
end

file = File.open("himawari_#{x}_#{y}.png", "w+")
file.write(res.body)
end
end
end

run

```

简单写了个抓大图的脚本,拼图请自行研究吧~
pepsin
2015-12-08 19:00:18 +08:00
require 'net/http'
def get_url time, x, y
str = "http://himawari8-dl.nict.go.jp/himawari8/img/D531106/20d/550/#{time}0000_#{x}_#{y}.png"
end

def run time
ts = []
20.times do |x|
thread = Thread.new do
20.times do |y|
name = "himawari_#{x}_#{y}.png"
unless File.exists? name
url = get_url time, x, y
uri = URI.parse(url)
req = Net::HTTP::Get.new uri.path
res = Net::HTTP.start(uri.host, uri.port, use_ssl: false) do |http|
http.request req
end

file = File.open(name, "w+")
file.write(res.body)
end
end
end
ts.push thread
end
ts.map(&:join)
end

run "2015/12/08/01"

require "cairo"

w = 20
h = 20
time = "05"
partial_width = 550
surface = Cairo::ImageSurface.new(w * partial_width, h * partial_width)
cr = Cairo::Context.new(surface)

w.times do |x|
h.times do |y|
name = "#{time}/himawari_#{x}_#{y}.png"
puts name
png = Cairo::ImageSurface.from_png(name)
cr.set_source(*png)
cr.matrix = Cairo::Matrix.identity
cr.translate(x * partial_width, y * partial_width)
cr.paint()
end
end

cr.target.write_to_png("all.png")
miao1007
2015-12-08 23:32:39 +08:00
楼上搞 20d 精度要拖垮服务器了,直接 1d 的精度也够用了

```golang
date := time.Now().Add(-21 * time.Minute).In(time.UTC).Format("2006/01/02/1504")
url:= "http://himawari8-dl.nict.go.jp/himawari8/img/D531106/1d/550/" + date[0:len(date)-1] + "000_0_0.png"
fmt.Print(url)
```
bitdust
2015-12-09 00:00:19 +08:00
GPU
2015-12-09 08:13:33 +08:00
@bitdust 程序的自带更新不可以用?
SilentDepth
2015-12-09 10:21:15 +08:00
为什么只能看到红红的澳大利亚,不开心 :(
GPU
2015-12-09 10:25:00 +08:00
@pepsin
```
require "cairo"

w = 20
h = 20
time = "05"
partial_width = 550
surface = Cairo::ImageSurface.new(w * partial_width, h * partial_width)
cr = Cairo::Context.new(surface)

w.times do |x|
h.times do |y|
name = "#{time}/himawari_#{x}_#{y}.png"
puts name
png = Cairo::ImageSurface.from_png(name)
cr.set_source(*png)
cr.matrix = Cairo::Matrix.identity
cr.translate(x * partial_width, y * partial_width)
cr.paint()
end
end

cr.target.write_to_png("all.png")
```
執行這段的時候 。去到這裏就 killed 了。
05/himawari_14_3.png
Killed
GPU
2015-12-09 10:31:56 +08:00
@pepsin 沒事了 ,估計是 vps 性能不夠被母雞 kill 了。 換了一臺 10 核的就搞掂了。
GPU
2015-12-09 10:33:53 +08:00
我的碼哦。 搞了一張 20d 精度的。 174M 啊啊啊啊 。雙核 CPU 還搞不到,要弄了 10 核的才不卡。
pepsin
2015-12-09 12:56:48 +08:00
@miao1007 我本地 MBP 搞着玩的,不高清不好玩
GPU
2015-12-09 14:09:19 +08:00
@bitdust 什麼時候會支持更高精度的地球?
@pepsin 我發現圖片的第一行去到了最後一行呢?
pepsin
2015-12-09 14:27:38 +08:00
@GPU 啊。估计我失误了。我之前还以为那是倒影。
GPU
2015-12-09 14:31:18 +08:00
@pepsin 太空怎会有倒影 。 捂脸

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/241563

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX