获取Bing每日图片的正确姿势

Bing图片每天都会变化,这些图片往往是有故事含义的;手动下载下来虽然容易 但是每天都如此 就显得十分繁琐,作为网页的背景图片 每天更换一次 则更是麻烦。好在用PHP可以将其实现自动化。

API方式

API 我已经完成 网址为: https://tao.cat/api/bing.php
但是因为我站点是建在内网opi上的 并通过Ngrok穿透到外网 由于担心ip暴露 我还加了CloudFlare 所以对国内用户而言 会不太友好;所以我将源代码粘贴如下

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

但是由于字符编码的问题 代码往往会出现玄学BUG 所以在此直接下载

内嵌方式

通过API方式 我们获取到的图片是1366x768分辨率 但如果想要更高的1920x1200 可以试下这种方法;我个人还是推荐使用API方式获取。

<?php
$str = file_get_contents('https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1');
$array = json_decode($str);
$imgurl = $array->{"images"}[0]->{"url"};
echo $imgurl;
?>

以上内容直接放在 img 标签内即可。

Bing 图片介绍

API 我已经完成 网址为: https://tao.cat/api/bing-info.php
每张图片都会有他的来源信息以及拍摄者想表达的意愿,如果把它加到网页内岂不是逼格满满??

<?php
$url=file_get_contents('https://cn.bing.com/HPImageArchive.aspx?idx=0&n=1');

if (preg_match("/<copyright>(.+?)<\/copyright>/ies", $url, $matches)) {
    $imgcopyright=$matches[1];
}
if ($imgcopyright) {
    header("Content-type: text/html; charset=utf-8");
    echo $imgcopyright;
} else {
    exit('error');
}
?>

还是由于字符编码的问题 代码往往会出现玄学BUG 所以在此直接下载

效果展示

老子BLOG

添加新评论

Tip:如果评论系统无法加载,请自备梯子 3Q.点我购买