欢迎光临景诺科技软件开发淘宝店

进店请收藏,谢谢

php批量下载图片到本地

直接上代码,里面有注释:

/*
 * 对于没有防盗链的图片
 * $url 图片地址
 * $filename 图片保存地址
 * return 返回下载的图片路径和名称,图片大小
 */
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);
}

 

/*
* 有防盗链的图片
* $url 图片地址
* $filename 图片保存地址
* return 返回下载的图片路径和名称,图片大小
* $fromurl 来源URL,填写来源图片网址可破解防盗链
*/
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");//1从缓存获取2删除缓存/重新缓存
 $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);
 //echo $id;
 //echo $endid;
 if($endid==$id){
 exit('所有图片下载完成!');
 }
 //echo $endid;
 $data2['cover_imgurl'] = $this->imgdown2($data[$id]['cover_imgurl']);
 //echo $data[$id]['thum_url'];
 $data2['thum_url'] = $this->imgdown2($data[$id]['thum_url'],'thum_');//中型图片type
 $data2['id']=$data[$id]['id'];
 if(!$data2['thum_url'] || !$data2['cover_imgurl']){
 $data2['status']=-1;
 }else{
 $data2['status']=2;
 }
 $res = M('Cjlist')->save($data2);
 //$this->echosql();
 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>';
 }
 //dump($data2);
 //dump($data);

 }

附:


/*
 *图片采集保存本地生成缩略图
 *
 * */

 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);
 //$img = file_get_contents($picurl);
 //echo file_put_contents('222.jpg',$img);
 //exit;
 //$reimg="/20140529/1401333398.jpg";
 //dump($reimg);
 //exit;
 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);
 //dump($imginfo);
 $imgarr['cover_url']=$reimg;
 $imgarr['thum_url']=$mulu.$thum_name;
 $imgarr['thum_w']=$imginfo['width'];
 $imgarr['thum_h']=$imginfo['height'];
 return $imgarr;
 }

更多

本文固定链接: http://shanmao.me/webback/thinkphp/php-pi-liang-xia-zai-tu-pian-dao-ben-di | 山猫的博客

该日志由 admin 于2014年05月30日发表在 php, thinkphp 分类下,
原创文章转载请注明: php批量下载图片到本地 | 山猫的博客