php实现图片批量下载到本地实例
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-22 09:36:01 浏览: 评论:0
关于直接采集远程机器图片之后再下载到我们本地其实非常的简单,我们通常会使用fopen 与 file_put_contents 或者高级点的curl来实现,下面我整理了几个比较好用的图片下载到本地例子,大家一起看看.
对于没有防盗链的图片,代码如下:
- /*
- * 对于没有防盗链的图片
- * $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);//开源代码phpfensi.com
- $imgarr['cover_url']=$reimg;
- $imgarr['thum_url']=$mulu.$thum_name;
- $imgarr['thum_w']=$imginfo['width'];
- $imgarr['thum_h']=$imginfo['height'];
- return $imgarr;
- }
Tags: php图片批量下载 php图片下载
相关文章
- ·php实现的css文件背景图片下载器代码(2021-04-25)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)