实现下载远程图片并把它保存到本地有很多方法,比如file_get_contents
和copy
方法,如果对方网站设置了防盗链,这些方法就不那么友好了,这里附上使用curl实现下载远程图片并保存到本地的方法。
//方法一
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,'.');
if($ext!='.gif'&&$ext!='.jpg'){
return array('file_name'=>'','save_path'=>'','error'=>3);
}
$filename=time().$ext;
}
if(0!==strrpos($save_dir,'/')){
$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);
}
//方法二
function api_image($page,$n){
$url = "http://api.avatardata.cn/Joke/QueryImgByTime";
$params = "key=d1091150c206481c83e30ecd52078d02&page=".$page."&rows=50&sort=desc&time=1496656686";
$ch = curl_init();
curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 );
curl_setopt( $ch, CURLOPT_USERAGENT , '' );
curl_setopt( $ch, CURLOPT_TIMEOUT , 60);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params );
$response = curl_exec( $ch );
$response = json_decode($response);
curl_close( $ch );
if($data = $response->result){
return $data;
}else{
echo "\n";var_dump('end by:'.$page.'image_id:'.$n);exit;
}
}
$b = 6949;
for ($i=19; $i >0 ; $i--) {
echo 'page='.$i.'--image_id='.$b."\n";
$data = api_image($i,$b);
foreach ($data as $value) {
$uri = basename($value->url);
$file_name = substr($uri,strpos($uri,'=')+1);
$ext = pathinfo($file_name,PATHINFO_EXTENSION);
// copy(htmlspecialchars_decode($value->url),$_SERVER['DOCUMENT_ROOT'].'joke_image/'.md5($b).$ext);
if($ext == 'gif'){
copy(htmlspecialchars_decode($value->url),'/data/httpd/www/Suvan/suixingbiji/joke_image/'.$b++.'.'.$ext);
}else{
continue;
}
}
}
您可以选择一种方式赞助本站
支付宝扫一扫
微信扫一扫