PHP获取Bing背景图

/ 37评 / 2

网上获取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就可以打印一个图片信息,可以修改一下做其他用途。

37条回应:“PHP获取Bing背景图”

  1. Rich说道:

    我研究了一番,发现获取到的图片地址不含主机头原因如下:
    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值是不带主机头的。

  2. Rich说道:

    感觉七牛越来越不给力了,我最近想试试又拍云

    • Tokin说道:

      @Rich 还行啊,没什么变化。。。

      • Rich说道:

        @Tokin 难道是我的网络问题?感觉又拍云真的快很多。七牛有时候超时。
        另外,感觉文章中用file_get_contents的方式好像不够curl效率高,而且用file_get_contents服务器压力大些。

  3. 碎碎念ZWS说道:

    嗯,轻轻松松copy过来了,哈哈

  4. 冰龙说道:

    $imgurl 那里多了个双引号不会出错吗?

  5. 夜枫说道:

    bing 上面的背景好漂亮,现在百度图片搜索也搞的像bing~~

  6. 皮蛋说道:

    好评,留着

发表评论

电子邮件地址不会被公开。 必填项已用*标注