php将远程图片下载到本地

时间:2022-11-12 08:59:25

php将远程图片下载到本地

<?php
//php获取远程图片并下载保存到本地
function getImage($url,$save_dir='',$filename='',$type=0){
if(trim($url)==''){
return array('file_name'=>'','save_path'=>'','error'=>1);
}
if(trim($save_dir)==''){
$save_dir='./';
}
if(trim($filename)==''){//保存文件名
$ext=strrchr($url,'.'); //strrchr查找指定字符在字符串中的最后一次出现
if($ext!='.gif' && $ext!='.jpg'){
return array('file_name'=>'','save_path'=>'','error'=>3);
}
$filename=time().$ext;
}
if(0!==strrpos($save_dir,'/')){ //strrpos — 计算指定字符串在目标字符串中最后一次出现的位置
$save_dir.='/';
}
//创建保存目录
if(!file_exists($save_dir) && !mkdir($save_dir,0777,true)){
return array('file_name'=>'','save_path'=>'','error'=>5);
}
//获取远程文件所采用的方法
if($type){
$ch=curl_init();
$timeout=5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$img=curl_exec($ch);
curl_close($ch);
}else{
ob_start();
readfile($url);
$img=ob_get_contents();
ob_end_clean();
}
//$size=strlen($img);
//文件大小
$fp2=@fopen($save_dir.$filename,'a');
fwrite($fp2,$img);
fclose($fp2);
unset($img,$url);
return array('file_name'=>$filename,'save_path'=>$save_dir.$filename,'error'=>0);
}
echo "<pre>";
print_r(getImage("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1494505721827&di=75c254a583b8264a19240ff464bc540f&imgtype=0&src=http%3A%2F%2Fimg.bimg.126.net%2Fphoto%2FTxJ6ieiAN32YFyp2l5VAZw%3D%3D%2F5413608227092849067.jpg",'','23.png',0));
echo "</pre>";