一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

php实现图片批量下载到本地实例(可采防盗链)

时间:2014-06-24 编辑:简简单单 来源:一聚教程网

对于没有防盗链的图片

 代码如下 复制代码

/*
 * 对于没有防盗链的图片
 * $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下载";
}else{
echo '保存出错,正在重试刷新。';
}
//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;
 }

热门栏目