关于直接采集远程机器图片之后再下载到我们本地其实非常的简单,我们通常会使用fopen 与 file_put_contents 或者高级点的curl来实现,下面我整理了几个比较好用的图片下载到本地例子,大家一起看看.
对于没有防盗链的图片,代码如下:
-
-
-
-
-
-
-
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);
-
}
有防盗链的图片,代码如下:
-
-
-
-
-
-
-
-
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");
-
$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);
-
-
-
if($endid==$id){
-
exit('所有图片下载完成!');
-
}
-
-
$data2['cover_imgurl'] = $this->imgdown2($data[$id]['cover_imgurl']);
-
-
$data2['thum_url'] = $this->imgdown2($data[$id]['thum_url'],'thum_');
-
$data2['id']=$data[$id]['id'];
-
if(!$data2['thum_url'] || !$data2['cover_imgurl']){
-
$data2['status']=-1;
-
}else{
-
$data2['status']=2;
-
}
-
$res = M('Cjlist')->save($data2);
-
-
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>';
-
}
-
-
-
-
}
同时还可以生成缩略图,代码如下:
-
-
-
-
-
-
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);
-
-
-
-
-
-
-
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);
-
-
$imgarr['cover_url']=$reimg;
-
$imgarr['thum_url']=$mulu.$thum_name;
-
$imgarr['thum_w']=$imginfo['width'];
-
$imgarr['thum_h']=$imginfo['height'];
-
return $imgarr;
-
}
(责任编辑:最模板) |