php批量下载图片到本地

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

[code lang=”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);
}

[/code]

批量采集代码:

[code lang=”php”]
/**
* 批量下载图片
*/
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);

}

[/code]

附:

[code lang=”php”]

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

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;
}

[/code]

“php批量下载图片到本地”的一个回复

评论已关闭。