当前位置:首页 > PHP教程 > php应用 > 列表

php实现图片批量下载到本地实例

发布:smiling 来源: PHP粉丝网  添加日期:2014-09-22 09:36:01 浏览: 评论:0 

关于直接采集远程机器图片之后再下载到我们本地其实非常的简单,我们通常会使用fopen 与 file_put_contents 或者高级点的curl来实现,下面我整理了几个比较好用的图片下载到本地例子,大家一起看看.

对于没有防盗链的图片,代码如下:

  1. /* 
  2.  * 对于没有防盗链的图片 
  3.  * $url 图片地址 
  4.  * $filename 图片保存地址 
  5.  * return 返回下载的图片路径和名称,图片大小 
  6.  */ 
  7. function GrabImage($url,$filepath,$filename="") { 
  8. if($url==""return false; 
  9.  
  10. $ext=strrchr($url,"."); 
  11. if($filename=="") { 
  12. if($ext!=".gif" && $ext!=".jpg" && $ext!=".png"return false; 
  13. $filename=date("YmdHis"); 
  14.  
  15. ob_start(); 
  16. readfile($url); 
  17. $img = ob_get_contents(); 
  18. ob_end_clean(); 
  19. $size = strlen($img); // 图片大小 
  20.  
  21. !is_dir(getcwd().$filepath)? mkdir(getcwd().$filepath):null;//生成文件夹 
  22.  
  23. $fp2=fopen(getcwd().$filepath.$filename.$ext"a"); 
  24. fwrite($fp2,$img); 
  25. fclose($fp2); 
  26.  
  27. return array($filepath.$filename.$ext,$size); 

有防盗链的图片,代码如下:

  1. /* 
  2. * 有防盗链的图片 
  3. * $url 图片地址 
  4. * $filename 图片保存地址 
  5. * return 返回下载的图片路径和名称,图片大小 
  6. * $fromurl 来源URL,填写来源图片网址可破解防盗链 
  7. */ 
  8. function GrabImage2($url,$filepath,$filename="",$fromurl) { 
  9.  if($url==""return false; 
  10.  
  11. $ext=strrchr($url,"."); 
  12.  if($filename=="") { 
  13.  if($ext!=".gif" && $ext!=".jpg" && $ext!=".png"return false; 
  14.  $filename=date("YmdHis"); 
  15.  } 
  16.  
  17. !is_dir(getcwd().$filepath)? mkdir(getcwd().$filepath):null;//生成文件夹 
  18.  
  19.  $re = $this->curlg($url,$fromurl); 
  20.  $size = file_put_contents(getcwd().$filepath.$filename.$ext,$re);//返回大小 
  21.  
  22.  return array($filepath.$filename.$ext,$size); 

批量采集代码:

  1. /** 
  2. * 批量下载图片 
  3. */ 
  4. public function downimg(){ 
  5. $keep = $this->_get("keep");//1从缓存获取2删除缓存/重新缓存 
  6. $id = $this->_get("id"); 
  7. $id = $id?$id:0; 
  8. $nextid = $id+1; 
  9. if($keep!=1){ 
  10. $data = M('Cjlist')->where("status=1")->select(); 
  11. S("keepcjdata",$data,3600); 
  12. }else
  13. $data = S("keepcjdata"); 
  14. $endidcount($data); 
  15. //echo $id; 
  16. //echo $endid; 
  17. if($endid==$id){ 
  18. exit('所有图片下载完成!'); 
  19. //echo $endid; 
  20. $data2['cover_imgurl'] = $this->imgdown2($data[$id]['cover_imgurl']); 
  21. //echo $data[$id]['thum_url']; 
  22. $data2['thum_url'] = $this->imgdown2($data[$id]['thum_url'],'thum_');//中型图片type 
  23. $data2['id']=$data[$id]['id']; 
  24. if(!$data2['thum_url'] || !$data2['cover_imgurl']){ 
  25. $data2['status']=-1; 
  26. }else
  27. $data2['status']=2; 
  28. $res = M('Cjlist')->save($data2); 
  29. //$this->echosql(); 
  30. if($res){ 
  31. echo '下载完成ID:'.$data2['id']." 前往下一个ID下载<script>window.location.href='".U('Index/downimg')."/keep/1/id/".$nextid."'</script>"; 
  32. }else
  33. echo '保存出错,正在重试刷新。<script>window.location.reload()</script>'
  34. //dump($data2); 
  35. //dump($data); 
  36.  

同时还可以生成缩略图,代码如下:

  1. /* 
  2.  *图片采集保存本地生成缩略图 
  3.  * 
  4.  * */ 
  5.  
  6.  public function imgdown($picurl='http://p0.so.qhimg.com/t0129f40df5810dfaa5.jpg',$fromurl='http://image.so.com'){ 
  7.  $mulu = "/".date("YmdH",time())."/"
  8.  $reimg = $this->GrabImage2($picurl,$mulu,time(),$fromurl); 
  9.  //$img = file_get_contents($picurl); 
  10.  //echo file_put_contents('222.jpg',$img); 
  11.  //exit; 
  12.  //$reimg="/20140529/1401333398.jpg"; 
  13.  //dump($reimg); 
  14.  //exit; 
  15.  if($reimg[1]<=0){ 
  16.  exit("下载图片失败"); 
  17.  } 
  18.  $reimg=$reimg[0]; 
  19.  import('ORG.Util.Image'); 
  20.  $Image = new Image(); 
  21.  $imgurl = getcwd().$reimg
  22.  $ext=strrchr($imgurl,"."); 
  23.  $thum_name = $Image->thumb($imgurl,"thum_".time().$ext,'','288','432'); 
  24.  rename(getcwd()."/".$thum_name,getcwd().$mulu.$thum_name);//移动到文件夹里面 
  25.  $imginfo = $Image->getImageInfo(getcwd().$mulu.$thum_name); 
  26.  //dump($imginfo);//开源代码phpfensi.com 
  27.  $imgarr['cover_url']=$reimg
  28.  $imgarr['thum_url']=$mulu.$thum_name
  29.  $imgarr['thum_w']=$imginfo['width']; 
  30.  $imgarr['thum_h']=$imginfo['height']; 
  31.  return $imgarr
  32.  }

Tags: php图片批量下载 php图片下载

分享到: