采集远程图片,php获取远程图片并把它保存到本
分类:关于美高梅

对于没有防盗链的图片

例1

<?php

//变量说明:
// $url 是远程图片的完整url地址,不能为空。
// $filename www.111cn.net是可选变量: 如果为空,本地文件名将基于时间和日期
// 自动生成.

 代码如下

 代码如下

//
// Function: 获取远程图片并把它保存到本地
//
//
// 确定您有把文件写入本地服务器的权限
//
//
// 变量说明:
// $url 是远程图片的完整URL地址,不能为空。
// $filename 是可选变量: 假如为空,本地文件名将基于时间和日期
// 自动生成.

 代码如下

/*
 * 对于没有防盗链的图片
 * $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);
}  

/*
*功能:php多种方式完美实现下载远程图片保存到本地
*参数:文件url,保存文件名称,使用的下载方式
*当保存文件名称为空时则使用远程文件原来的名称
*/
function getImage($url,$filename='',$type=0){
    if($url==''){return false;}
    if($filename==''){
        $ext=strrchr($url,'.');
        if($ext!='.gif' && $ext!='.jpg'){return false;}
        $filename=time().$ext;
    }
    //文件保存路径
    if($type){
  $ch=curl_init();
  $timeout=5;
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
  $img=curl_exec($ch);
  curl_close($ch);
    }else{
     ob_start();
     readfile($url);
     $img=ob_get_contents();
     ob_end_clean();
    }
    $size=strlen($img);
    //文件大小
    $fp2=@fopen($filename,'a');
    fwrite($fp2,$img);
    fclose($fp2);
    return $filename;
}

function GrabImage($url,$filename="") {
if($url==""):return false;endif;

function grabimage($url,$filename="") {
  if($url==""):return false;endif;

有防盗链的图片  

例2

if($filename=="") {
$ext=strrchr($url,".");
if($ext!=".gif" && $ext!=".jpg"):return false;endif;
$filename=date("dMYHis").$ext;
}

  if($filename=="") {
    $ext=strrchr($url,".");
    if($ext!=".gif" && $ext!=".jpg"):return false;endif;
    $filename=date("dmyhis").$ext;
  }

 代码如下

 代码如下

ob_start();
readfile($url);
$img = ob_get_contents();
ob_end_clean();
$size = strlen($img);

  ob_start();
  readfile($url);
  $img = ob_get_contents();
  ob_end_clean();
  $size = strlen($img);

/*
* 有防盗链的图片
* $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);
}

<?php

$fp2=@fopen($filename, "a");
fwrite($fp2,$img);
fclose($fp2);

  $fp2=@fopen($filename, "a");
  fwrite($fp2,$img);
  fclose($fp2);

批量采集代码:

//
// Function: 获取远程图片并把它保存到本地
//
//
//   确定您有把文件写入本地服务器的权限
// 
//
// 变量说明:
// $url 是远程图片的完整URL地址,不能为空。
// $filename 是可选变量: 如果为空,本地文件名将基于时间和日期
// 自动生成.

return $filename;
}

  return $filename;
}

 代码如下

function GrabImage($url,$filename="") {
   if($url==""):return false;endif;

$img=GrabImage("","");
if($img):echo '<pre><img src="'.$img.'"></pre>';
else:echo "false";
endif;

//如果可用采集防采集的功能把fopen改成111cn.net

/**
* 批量下载图片
*/
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);
 
}

   if($filename=="") {
     $ext=strrchr($url,".");
     if($ext!=".gif" && $ext!=".jpg"):return false;endif;
     $filename=date("dMYHis").$ext;
   }

?>

 代码如下

同时还可以生成缩略图哦

   ob_start();
   readfile($url);
   $img = ob_get_contents();
   ob_end_clean();
   $size = strlen($img);

$ch = curl_init();
curl_setopt($ch, curlopt_url, $url);//这是目标地址
curl_setopt($ch, curlopt_header, 0);
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_referer,   $referer);//这里伪造
$data = curl_exec($ch);
curl_close($ch);
echo $data;

 代码如下

   $fp2=@fopen($filename, "a");
   fwrite($fp2,$img);
   fclose($fp2);

 

/*
 *图片采集保存本地生成缩略图
 *
 * */
 
 public function imgdown($picurl='
 $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;
 }

   return $filename;
}

$img=GrabImage("","");
if($img):echo '<pre><img src="'.$img.'"></pre>';else:echo "false";endif;  

?>

dedecms中的:

 

 代码如下

if(!empty($saveremoteimg))
         {
                 $body = stripslashes($body);
                 $img_array = array();
                 preg_match_all("/(src|SRC)=["|'| ]{0,}();
                 $img_array = array_unique($img_array[2]);
                 set_time_limit(0);
                 $imgUrl = $img_dir."/".strftime("%Y%m%d",time());
                 $imgPath = $base_dir.$imgUrl;
                 $milliSecond = strftime("%H%M%S",time());
                 if(!is_dir($imgPath)) @mkdir($imgPath,0777);
                 foreach($img_array as $key =>$value)
                 {
                         $value = trim($value);
                         $get_file = @file_get_contents($value);
                         $rndFileName = $imgPath."/".$milliSecond.$key.".".substr($value,-3,3);
                         $fileurl = $imgUrl."/".$milliSecond.$key.".".substr($value,-3,3);
                         if($get_file)
                         {
                                 $fp = @fopen($rndFileName,"w");
                                 @fwrite($fp,$get_file);
                                 @fclose($fp);
                         }
                         $body = ereg_replace($value,$fileurl,$body);
                 }
                 $body = addslashes($body);
         }
?>

例4

 代码如下

<?php
//
// Function: 获取远程图片并把它保存到本地
//
//
// 确定您有把文件写入本地服务器的权限
//
//
// 变量说明:
// $url 是远程图片的完整URL地址,不能为空。
// $filename 是可选变量: 如果为空,本地文件名将基于时间和日期// 自动生成.
function GrabImage($url,$filename='') {
if($url==''):return false;endif;
if($filename=='') {
$ext=strrchr($url,'.');
if($ext!='.gif' && $ext!='.jpg'):return false;endif;$filename=date('dMYHis').$ext;
}
ob_start();
readfile($url);
$img = ob_get_contents();
ob_end_clean();
$size = strlen($img);
$fp2=@fopen($filename, 'a');
fwrite($fp2,$img);
fclose($fp2);
return $filename;
}
$img=GrabImage('','');
if($img){echo '<pre><img src='.$img.'></pre>';}else{echo 'false';}
?>

本文由美高梅网址发布于关于美高梅,转载请注明出处:采集远程图片,php获取远程图片并把它保存到本

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文