Bing 图片都是由必应的团队精挑细选的图片,网络上自动将必应壁纸保存到服务器本地的PHP代码很多,由于我自己的服务器带宽比较小,将必应壁纸保存到服务器本地并作为网站背景时加载速度太慢会影响观感,那么,如果可以把直接 Bing 的每日图片接口通过PHP设置为博客背景会不会更好看呢?

接口

进行抓包,我们可以知道这个链接 https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1

获取图片

通过抓包显示结果:

{"images":[{"startdate":"20211129","fullstartdate":"202111291600","enddate":"20211130","url":"/th?id=OHR.ElephantGiving_ZH-CN9743352473_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp","urlbase":"/th?id=OHR.ElephantGiving_ZH-CN9743352473","copyright":"马赛马拉国家保护区中的非洲草原象,肯尼亚 (© Yva Momatiuk and John Eastcott/Minden Pictures)","copyrightlink":"https://www.bing.com/search?q=%E9%9D%9E%E6%B4%B2%E8%8D%89%E5%8E%9F%E8%B1%A1&form=hpcapt&mkt=zh-cn","title":"","quiz":"/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20211129_ElephantGiving%22&FORM=HPQUIZ","wp":true,"hsh":"e9a2162e9a4784993285642a017c0693","drk":1,"top":1,"bot":1,"hs":[]}],"tooltips":{"loading":"正在加载...","previous":"上一个图像","next":"下一个图像","walle":"此图片不能下载用作壁纸。","walls":"下载今日美图。仅限用作桌面壁纸。"}}

我们从中提取图片链接,url 地址:
/th?id=OHR.ElephantGiving_ZH-CN9743352473_1920x1080.jpg&rf=LaDigue_1920x1080.jpg
以下是将必应每日图片通过 php 直接输出分辨率为1920X1080的图片的代码

<?php
    $str=file_get_contents('https://cn.bing.com/HPImageArchive.aspx?idx=0&n=1');
if (preg_match("/<urlBase>(.+?)<\/urlBase>/", $str, $matches)) {
    $imgurl='https://cn.bing.com'.$matches[1].'_1920x1080.jpg';
}
if ($imgurl) {
    header('Content-Type: image/JPEG');
    @ob_end_clean();
    @readfile($imgurl);
    @flush();
    @ob_flush();
    exit();
} else {
    exit('error');
}
?>

如何浏览昨天/前天的图片
http://cn.bing.com/HPImageArchive.aspx?idx=0&n=1 在这里,更换 idx= 这个参数就可以了。
http://cn.bing.com/HPImageArchive.aspx?idx=1&n=1 将要得到昨天的图片
http://cn.bing.com/HPImageArchive.aspx?idx=2&n=1 得到前天的图片

最后修改:2022 年 11 月 13 日
若您觉得我的文章有用请赞赏一下吧~