PHP将API接口获取的图片下载到本地

前言

现在有很多站点都会用到图片,但又不想自己一个一个下载上传,这里就是用API接口将获取到的图片下载到本地,然后供自己使用,现在很多接口都是免费一定量超过就要收费,站长也穷,所以就捣鼓了这个!

接口

要先到网站获取接口的token

代码

需要新建一个文件夹放图片跟代码,例如新建acg(文件夹名)、acg-api.php(PHP文件),先新建一个acg然后在里面新建acg-api.php放入下方代码

<?php
if (($_GET['api'] === 'api-acg')){
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://v2.alapi.cn/api/acg",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "token=要自己去网站获取&format=json",
CURLOPT_HTTPHEADER => array(
"Content-Type: application/x-www-form-urlencoded",
),
));
$response = curl_exec($curl);
$a = json_decode($response,true);
curl_close($curl);
$url = $a['data']['url']; //获取接口的图片链接
if(!isset($_POST ['http'])){
$url = str_replace("https","http",$url); //如果链接协议不是http就改成http
}
if($url=="") return false; //如果图片链接为空则不继续允行
if($filename=="") {
$ext=strrchr($url,"."); //获取图片后缀
if($ext!=".gif" && $ext!=".jpg" && $ext!=".png") return false; //如果不是图片则不继续运行
$filename = substr($url, strrpos($url, '/')+1); //获取图片名
}
ob_start(); //输出缓冲区
readfile($url); //读取文件,并写入到输出缓冲
$img = ob_get_contents(); //返回输出缓冲区的内容
ob_end_clean(); //清空缓冲区并关闭输出缓冲
$fp2=@fopen($filename, "a"); //打开文件 a:写入方式打开
fwrite($fp2,$img); //将内容写入文件夹中
fclose($fp2); //关闭文件夹
}elseif (($_GET['api'] === 'acg-picture')){
$localurl="*.{gif,jpg,png}"; //这将得到一个文件夹中的所有gif,jpg和png图片的数组
$img_array=glob($localurl,GLOB_BRACE);
$img=array_rand($img_array); //从数组中选择一个随机图片
$imgurl=$img_array[$img];
$imgurl='https://'.$_SERVER['SERVER_NAME'].'/images/acg/'.$imgurl; //这个需要你们自行修改
header("location:$imgurl"); //在页面显示图片地址
}
?>
<?php
if (($_GET['api'] === 'api-acg')){
    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://v2.alapi.cn/api/acg",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_POSTFIELDS => "token=要自己去网站获取&format=json",
        CURLOPT_HTTPHEADER => array(
            "Content-Type: application/x-www-form-urlencoded",
        ),
    ));
    $response = curl_exec($curl);
    $a = json_decode($response,true);
    curl_close($curl);
    $url = $a['data']['url']; //获取接口的图片链接
    if(!isset($_POST ['http'])){
         $url = str_replace("https","http",$url); //如果链接协议不是http就改成http
    } 
    if($url=="") return false; //如果图片链接为空则不继续允行
    if($filename=="") {  
        $ext=strrchr($url,"."); //获取图片后缀
        if($ext!=".gif" && $ext!=".jpg" && $ext!=".png") return false; //如果不是图片则不继续运行
        $filename = substr($url, strrpos($url, '/')+1); //获取图片名
    }  
    ob_start();  //输出缓冲区
    readfile($url);  //读取文件,并写入到输出缓冲
    $img = ob_get_contents();  //返回输出缓冲区的内容
    ob_end_clean();  //清空缓冲区并关闭输出缓冲
    $fp2=@fopen($filename, "a");  //打开文件 a:写入方式打开
    fwrite($fp2,$img);  //将内容写入文件夹中
    fclose($fp2); //关闭文件夹
}elseif (($_GET['api'] === 'acg-picture')){
    $localurl="*.{gif,jpg,png}"; //这将得到一个文件夹中的所有gif,jpg和png图片的数组
    $img_array=glob($localurl,GLOB_BRACE);
    $img=array_rand($img_array); //从数组中选择一个随机图片 
    $imgurl=$img_array[$img];
    $imgurl='https://'.$_SERVER['SERVER_NAME'].'/images/acg/'.$imgurl; //这个需要你们自行修改
    header("location:$imgurl"); //在页面显示图片地址
}
?>
<?php if (($_GET['api'] === 'api-acg')){ $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://v2.alapi.cn/api/acg", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => "token=要自己去网站获取&format=json", CURLOPT_HTTPHEADER => array( "Content-Type: application/x-www-form-urlencoded", ), )); $response = curl_exec($curl); $a = json_decode($response,true); curl_close($curl); $url = $a['data']['url']; //获取接口的图片链接 if(!isset($_POST ['http'])){ $url = str_replace("https","http",$url); //如果链接协议不是http就改成http } if($url=="") return false; //如果图片链接为空则不继续允行 if($filename=="") { $ext=strrchr($url,"."); //获取图片后缀 if($ext!=".gif" && $ext!=".jpg" && $ext!=".png") return false; //如果不是图片则不继续运行 $filename = substr($url, strrpos($url, '/')+1); //获取图片名 } ob_start(); //输出缓冲区 readfile($url); //读取文件,并写入到输出缓冲 $img = ob_get_contents(); //返回输出缓冲区的内容 ob_end_clean(); //清空缓冲区并关闭输出缓冲 $fp2=@fopen($filename, "a"); //打开文件 a:写入方式打开 fwrite($fp2,$img); //将内容写入文件夹中 fclose($fp2); //关闭文件夹 }elseif (($_GET['api'] === 'acg-picture')){ $localurl="*.{gif,jpg,png}"; //这将得到一个文件夹中的所有gif,jpg和png图片的数组 $img_array=glob($localurl,GLOB_BRACE); $img=array_rand($img_array); //从数组中选择一个随机图片 $imgurl=$img_array[$img]; $imgurl='https://'.$_SERVER['SERVER_NAME'].'/images/acg/'.$imgurl; //这个需要你们自行修改 header("location:$imgurl"); //在页面显示图片地址 } ?>
图片[1]-PHP将API接口获取的图片下载到本地-随风去-396资源

使用步骤

获取之后就是使用步骤了,也很简单直接获取就行

https://api.396zy.cn/acg/acg-api.php?api=api-acg
https://api.396zy.cn/acg/acg-api.php?api=api-acg
https://api.396zy.cn/acg/acg-api.php?api=api-acg

结语

路径需要你们自行修改,这里就不多说了

Thank you push me off a cliff let me see the whole sky.
感谢你将我推下悬崖让我看清整片天空
© 版权声明
THE END
喜欢就支持一下吧
点赞7赞赏 分享
If we believe that tomorrow will be better, we can bear a hardship today.
如果我们相信明天会更好,今天就能承受艰辛
评论 共1条

请登录后发表评论