最模板 - 外贸网站建设,外贸网站模板

最模板

当前位置: 首页 > 建站教程 > php教程 >

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

时间:2014-09-22 09:55来源:未知 作者:最模板zuimoban 点击: 次
关于直接采集远程机器图片之后再下载到我们本地其实非常的简单,我们通常会使用fopen 与 file_put_contents 或者高级点的curl来实现,下面我整理了几个比较好用的图片下载到本地例子,大家

关于直接采集远程机器图片之后再下载到我们本地其实非常的简单,我们通常会使用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.  
  16. ob_start(); 
  17. readfile($url); 
  18. $img = ob_get_contents(); 
  19. ob_end_clean(); 
  20. $size = strlen($img); // 图片大小 
  21.  
  22. !is_dir(getcwd().$filepath)? mkdir(getcwd().$filepath):null;//生成文件夹 
  23.  
  24. $fp2=fopen(getcwd().$filepath.$filename.$ext, "a"); 
  25. fwrite($fp2,$img); 
  26. fclose($fp2); 
  27.  
  28. return array($filepath.$filename.$ext,$size); 
  29. } 

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

  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); 
  23. } 

批量采集代码:

  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. } 
  15. $endid= count($data); 
  16. //echo $id; 
  17. //echo $endid; 
  18. if($endid==$id){ 
  19. exit('所有图片下载完成!'); 
  20. } 
  21. //echo $endid; 
  22. $data2['cover_imgurl'] = $this->imgdown2($data[$id]['cover_imgurl']); 
  23. //echo $data[$id]['thum_url']; 
  24. $data2['thum_url'] = $this->imgdown2($data[$id]['thum_url'],'thum_');//中型图片type 
  25. $data2['id']=$data[$id]['id']; 
  26. if(!$data2['thum_url'] || !$data2['cover_imgurl']){ 
  27. $data2['status']=-1; 
  28. }else{ 
  29. $data2['status']=2; 
  30. } 
  31. $res = M('Cjlist')->save($data2); 
  32. //$this->echosql(); 
  33. if($res){ 
  34. echo '下载完成ID:'.$data2['id']." 前往下一个ID下载<script>window.location.href='".U('Index/downimg')."/keep/1/id/".$nextid."'</script>"; 
  35. }else{ 
  36. echo '保存出错,正在重试刷新。<script>window.location.reload()</script>'; 
  37. } 
  38. //dump($data2); 
  39. //dump($data); 
  40.  
  41. } 

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

  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);//开源代码vcphp.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.  }
(责任编辑:最模板)
------分隔线----------------------------
栏目列表
推荐内容