PHP获取Bing背景图
网上获取Bing背景图的方法很多,但是好像很多都是获取的都是1366x768像素的,大屏幕下这个大小好像不够用,但是Bing网站的背景图是1920x1080的,官方用的是Josn方式获取的,于是:
//获取bing背景图
$str = file_get_contents('http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1');
$array = json_decode($str);
$imgurl = $array->{"images"}[0]->{"url"};
用<?php echo $imgurl;?>就可以输出图片地址了,在本地测试正常,但是我的实际应用却遇到了一些问题,上传到主机只能输出“/az/hprichbg/rb/图片名_1920x1080.jpg”不含主机头的地址,万分不解,于是我就稍微改造了下:
$imgurl = 'http://s.cn.bing.net'.$array->{"images"}[0]->{"urlbase"}.'_1920x1080.jpg';
这样就可以在一些比较特殊的主机上正常调用图片了,而且上面的方式还可以用一些CDN镜像这些图片来加速静态文件访问速度,比如我就是用的七牛云存储,简单粗暴的就应用上了。
解析:
$str = file_get_contents('http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1');
“idx=0” 的意思是当天的图片,“1”为昨天使用的图片,“-1”为明天要使用的图片,最小为-1,最大为15,也就是可以通过修改idx可以获取最近17的图片。 “n=1” 则是打印几个图片josn,默认1就可以打印一个图片信息,可以修改一下做其他用途。
哇!沙发,前天刚好看到好多人在说这个,你就弄出来玩了,速度真快,我也要弄一个。
你的新站地址是多少
垃圾站来的哦,你要看?
你竟然还搞垃圾站。。。
没事玩点新程序撒,隔一段时间就换掉的
我的Firefox的新标签页背景就是从bing自动下载的!
背景图是每天获取Bing壁纸
自动背景切换,很爽啊,张张精选
这个方法看起来很不错的样子
感觉高大上多了~~
支持,非常不错!
然而并不行。。。
嗨~ 我在博客志推荐了天空团 天空团在博客志的永久专属网址是 http://www.daquan8.com/typecho/62.html 不给博客志加个友链么~
这方法能行。。。。
好评,留着
bing 上面的背景好漂亮,现在百度图片搜索也搞的像bing~~
不敢用百度的,不知道什么时候就失效了
嗯,百度的图片有防盗链,很有可能突然之间变成了一个小孩(慈善广告)。。
嗯,百度还是不打算像Bing那样
$imgurl 那里多了个双引号不会出错吗?
好像没多- -
$imgurl = '"http://s.cn.bing.net'.$array->{"images"}[0]->{"urlbase"}.'_1920x1080.jpg';这里第一个…
- -多了一个双引号
我之前也发现了,但是忘了告诉你。。
我每注意,手打的时候抽了一下
奇怪,难道没人遇到这个错误。。。为什么没人告诉我
嗯,轻轻松松copy过来了,哈哈
感觉七牛越来越不给力了,我最近想试试又拍云
还行啊,没什么变化。。。
难道是我的网络问题?感觉又拍云真的快很多。七牛有时候超时。
另外,感觉文章中用file_get_contents的方式好像不够curl效率高,而且用file_get_contents服务器压力大些。
我研究了一番,发现获取到的图片地址不含主机头原因如下:
1.要想获取到的图片地址带主机头,必须定义格式参数为js,为http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1。其中format参数是js,也就是json。直接打开这个网址,你会发现,url值是带主机头的。
2.当不带格式参数时,默认获取到的就是xml格式,而不是json。如:http://cn.bing.com/HPImageArchive.aspx?idx=0&n=1。直接打开这个网址,你会看到是xml格式的,而且url值是不带主机头的。
因此得出结论:获取到的地址是否带主机头与是否在本地测试或在线应用无关。
而且xml格式获取到的图片只有1366x768,想要直接获取到1080p的图,必须是json格式获取。
我本地和线上都是json方式
这就奇怪了,我在线和本地输出的结果都是一样的,是不是传递参数过程中出了问题?
这个就不知道了
我Ping过s.cn.bing.net,发现是国内的IP,而且Ping值非常低,感觉没必要用七牛来加速。。