折腾下PHP获取Bing美图

微软必应搜索(bing)的背景图片不得不说,每张都是经典,美的一塌糊涂,网站也有各种这样那样调用bing美图的方法,今天,闲的没事干,就折腾了下。

最终得到的效果如下面两张图片所示:

火狐截图_2016-07-18T13-10-11.607Z火狐截图_2016-07-18T13-09-30.112Z获取bing美图的PHP代码大家估计都知道:

<?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');
    }
?>

保存为bing.php,然后直接访问即可。技术宅是保存在bing目录下,所以直接访问https://jszbug.com/bing/即可。

这里我们用到的接口是https://cn.bing.com/HPImageArchive.aspx?idx=0&n=1,这里的参数说明下,idx=o 是显示当天的图片,如果想显示昨天的美图,可以将idx=0改为idx=1,以此类推,据说,bing支持查看历史图片15天以内的,所以数字(0-15)。

由此,我在这里产生了一个想法,何不建立个页面,将这15天的图片都保存呢?

于是,引发了我简单操作了以下的项目:bing美图精选,实现的方法很简单,这里有人要问了,,那个图片的文字是如何实现的。其实就是以下代码实现的:

<?php
//获取图片XML信息
$url=file_get_contents('https://cn.bing.com/HPImageArchive.aspx?idx=0&n=1');   
//从XML文件中找到图片的版权介绍 
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'); 
}
?>

同样修改相关参数,即可实现对应的图片,显示对应的文字说明,这段代码可以直接引用在图片的title或者 alt之类的,大家自行学习操作!

PS:如过想实现把每天的图片都自动保存下来,下面也很简单:

<?php
error_reporting(0);
$dir=date('Ym').'/';
$file=scandir($dir);
$filenums=count($file)-2;
srand((double)microtime()*1000000);
$fileurl=rand(1,$filenums);
header('Content-Type: image/JPEG');
  @ob_end_clean();
  @readfile(date('Ym').'/'.sprintf("%02d", $fileurl).'.jpg');
  @flush(); @ob_flush();
exit();
?>

将以上代码保存为php,比如我这里保存为save-bing.php,上面的代码是用来自动保存文件的。

<?php
error_reporting(0);
$path=date('Ym');
if(!file_exists($path)){mkdir($path,0777);}
$pathurl = $path.'/'.date('d').'.jpg';
if(!is_file($pathurl)){
$str=file_get_contents('https://cn.bing.com/HPImageArchive.aspx?idx=0&n=1');
 if(preg_match("/<urlBase>(.+?)<\/urlBase>/ies",$str,$matches)){
  $imgurl='https://s.cn.bing.com'.$matches[1].'_1920x1080.jpg';
  copy($imgurl,$pathurl);
 }
}
 header('Content-Type: image/JPEG');
  @ob_end_clean();
  @readfile($pathurl);
  @flush(); @ob_flush();
exit();
?>

这段代码和之前最早的代码差不多,也有所区别,会自动在php同级目录下创建一个年月的文件夹,用来保存每天的bing美图!

这里就写到这里,教程都是通俗易懂的,大家自行操作玩耍。有不懂的可以随时找技术宅交流!

资讯

Ubuntu官网论坛再次被黑,又是SQL注入惹的祸

2016-7-18 13:46:48

资讯

ADSafe净网大师后台偷偷推送广告?

2016-7-22 21:44:48

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索

关于我们

技术宅,专注分享,专注技术!分享互联网科技新闻轶事,分享生活小常识,各种数码使用小技巧!互联网的精神本就是分享,我们坚信分享会带来更多的进步!

Copyright © 2020 技术宅 苏ICP备17056378号 苏公网安备32010202010371号 - 查询 29 次,耗时 0.1469 秒 南京市玄武区酷芯壳网络科技中心 提供技术支持 安全联盟认证