| 
       
	关于直接采集远程机器图片之后再下载到我们本地其实非常的简单,我们通常会使用fopen 与 file_put_contents 或者高级点的curl来实现,下面我整理了几个比较好用的图片下载到本地例子,大家一起看看. 
	对于没有防盗链的图片,代码如下: 
	
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			function GrabImage($url,$filepath,$filename="") { 
 
		- 
			if($url=="") return false; 
 
		- 
			 
 
		- 
			$ext=strrchr($url,"."); 
 
		- 
			if($filename=="") { 
 
		- 
			if($ext!=".gif" && $ext!=".jpg" && $ext!=".png") return false; 
 
		- 
			$filename=date("YmdHis"); 
 
		- 
			} 
 
		- 
			 
 
		- 
			ob_start(); 
 
		- 
			readfile($url); 
 
		- 
			$img = ob_get_contents(); 
 
		- 
			ob_end_clean(); 
 
		- 
			$size = strlen($img);  
 
		- 
			 
 
		- 
			!is_dir(getcwd().$filepath)? mkdir(getcwd().$filepath):null; 
 
		- 
			 
 
		- 
			$fp2=fopen(getcwd().$filepath.$filename.$ext, "a"); 
 
		- 
			fwrite($fp2,$img); 
 
		- 
			fclose($fp2); 
 
		- 
			 
 
		- 
			return array($filepath.$filename.$ext,$size); 
 
		- 
			} 
 
	 
 
	有防盗链的图片,代码如下: 
	
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			function GrabImage2($url,$filepath,$filename="",$fromurl) { 
 
		- 
			 if($url=="") return false; 
 
		- 
			 
 
		- 
			$ext=strrchr($url,"."); 
 
		- 
			 if($filename=="") { 
 
		- 
			 if($ext!=".gif" && $ext!=".jpg" && $ext!=".png") return false; 
 
		- 
			 $filename=date("YmdHis"); 
 
		- 
			 } 
 
		- 
			 
 
		- 
			!is_dir(getcwd().$filepath)? mkdir(getcwd().$filepath):null; 
 
		- 
			 
 
		- 
			 $re = $this->curlg($url,$fromurl); 
 
		- 
			 $size = file_put_contents(getcwd().$filepath.$filename.$ext,$re); 
 
		- 
			 
 
		- 
			 return array($filepath.$filename.$ext,$size); 
 
		- 
			} 
 
	 
 
	批量采集代码: 
	
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			public function downimg(){ 
 
		- 
			$keep = $this->_get("keep"); 
 
		- 
			$id = $this->_get("id"); 
 
		- 
			$id = $id?$id:0; 
 
		- 
			$nextid = $id+1; 
 
		- 
			if($keep!=1){ 
 
		- 
			$data = M('Cjlist')->where("status=1")->select(); 
 
		- 
			S("keepcjdata",$data,3600); 
 
		- 
			}else{ 
 
		- 
			$data = S("keepcjdata"); 
 
		- 
			} 
 
		- 
			$endid= count($data); 
 
		- 
			 
 
		- 
			 
 
		- 
			if($endid==$id){ 
 
		- 
			exit('所有图片下载完成!'); 
 
		- 
			} 
 
		- 
			 
 
		- 
			$data2['cover_imgurl'] = $this->imgdown2($data[$id]['cover_imgurl']); 
 
		- 
			 
 
		- 
			$data2['thum_url'] = $this->imgdown2($data[$id]['thum_url'],'thum_'); 
 
		- 
			$data2['id']=$data[$id]['id']; 
 
		- 
			if(!$data2['thum_url'] || !$data2['cover_imgurl']){ 
 
		- 
			$data2['status']=-1; 
 
		- 
			}else{ 
 
		- 
			$data2['status']=2; 
 
		- 
			} 
 
		- 
			$res = M('Cjlist')->save($data2); 
 
		- 
			 
 
		- 
			if($res){ 
 
		- 
			echo '下载完成ID:'.$data2['id']." 前往下一个ID下载<script>window.location.href='".U('Index/downimg')."/keep/1/id/".$nextid."'</script>"; 
 
		- 
			}else{ 
 
		- 
			echo '保存出错,正在重试刷新。<script>window.location.reload()</script>'; 
 
		- 
			} 
 
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			} 
 
	 
 
	同时还可以生成缩略图,代码如下: 
	
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			 public function imgdown($picurl='http://p0.so.qhimg.com/t0129f40df5810dfaa5.jpg',$fromurl='http://image.so.com'){ 
 
		- 
			 $mulu = "/".date("YmdH",time())."/"; 
 
		- 
			 $reimg = $this->GrabImage2($picurl,$mulu,time(),$fromurl); 
 
		- 
			  
 
		- 
			  
 
		- 
			  
 
		- 
			  
 
		- 
			  
 
		- 
			  
 
		- 
			 if($reimg[1]<=0){ 
 
		- 
			 exit("下载图片失败"); 
 
		- 
			 } 
 
		- 
			 $reimg=$reimg[0]; 
 
		- 
			 import('ORG.Util.Image'); 
 
		- 
			 $Image = new Image(); 
 
		- 
			 $imgurl = getcwd().$reimg; 
 
		- 
			 $ext=strrchr($imgurl,"."); 
 
		- 
			 $thum_name = $Image->thumb($imgurl,"thum_".time().$ext,'','288','432'); 
 
		- 
			 rename(getcwd()."/".$thum_name,getcwd().$mulu.$thum_name); 
 
		- 
			 $imginfo = $Image->getImageInfo(getcwd().$mulu.$thum_name); 
 
		- 
			  
 
		- 
			 $imgarr['cover_url']=$reimg; 
 
		- 
			 $imgarr['thum_url']=$mulu.$thum_name; 
 
		- 
			 $imgarr['thum_w']=$imginfo['width']; 
 
		- 
			 $imgarr['thum_h']=$imginfo['height']; 
 
		- 
			 return $imgarr; 
 
		- 
			 }
 
	 
 
      
      (责任编辑:最模板) |