本文编写于 445 天前,最后修改于 445 天前,其中某些信息可能已经过时。

获取Bing美图制作Api

看起来很复杂,但换个方法也太简单了吧,不过实际上手还是费了点心思

想法

要调用图的时候就换成bing的每日美图就行

本来是在bing官网研究官方图片地址的

结果万能的网友直接给出了bing官方的调用api

Bing官方每日壁纸地址

解释

参数名称 参数值
format 可选,返回值格式: js(即json)|xml
idx 可选,请求图片截止天数:0(今天)|1(截止至昨天)|-1(截止到明天准备的)
n 必须,请求的图片数量:1-8
mkt 可选,地区,中文为zh-CN,可参考ISO语言代码标准(ISO-639)

返回值参考

{
  "images": [
    {
      "startdate": "20200328",
      "fullstartdate": "202003281600",
      "enddate": "20200329",
      "url": "/th?id=OHR.BorrowingDays_ZH-CN3558219803_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp",
      "urlbase": "/th?id=OHR.BorrowingDays_ZH-CN3558219803",
      "copyright": "一只经受暴风雨的冠山雀,苏格兰 (© Ben Hall/Minden Pictures)",
      "copyrightlink": "https://www.bing.com/search?q=%E5%86%A0%E5%B1%B1%E9%9B%80&form=hpcapt&mkt=zh-cn",
      "title": "",
      "quiz": "/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20200328_BorrowingDays%22&FORM=HPQUIZ",
      "wp": true,
      "hsh": "d43b345a7ce721f5f22b8544be356a90",
      "drk": 1,
      "top": 1,
      "bot": 1,
      "hs": []
    }
  ],
  "tooltips": {
    "loading": "正在加载...",
    "previous": "上一个图像",
    "next": "下一个图像",
    "walle": "此图片不能下载用作壁纸。",
    "walls": "下载今日美图。仅限用作桌面壁纸。"
  }
}

之后调用即可

实际上手

发现要分别输出图片格式与json格式有点困难

假设实际地址是$url = https://www.bing.com/th?id=OHR.CarrickSpring_ZH-CN7085146237_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp

语言为PHP

第一种方法失败

return "<image src='{$url}'/>";

这种能输出图片,但如果要直接在css的background:url()里调用就完全不成功,只是显示一个图片而已,

此外如果是用了现成的api封装端口,还会出现{"data":这个图片}的奇怪现象,无法正常调用,为了避免出现不需要的json,我们可以用exit()提前结束程序运行,如

echo "<image src='{$url}'/>";
exit();

这样就不会被封装输出json

第二种方法失败

header("content-type:image/jpg");
return $url;

这种最后只会输出一个含小方框的图,但没有显示具体图片,但是常用来输出验证码

第三种方法成功

利用php的跳转

Header('Location:' . $url);
exit();

这样输出的就是原地址图片了,然后正常调用即可

本站Api地址

Bing壁纸接口 具体的参数可以参考这个

参考资料:

  1. 一个现成的bing壁纸接口

  2. 【已结贴】关于图片验证码 不能正常显示

  3. phalapi输出验证码图片乱码