用php获取远程图片并把它保存到本地的代码

时间:2022-08-26 21:48:05
  1. <?php  
  2. function GrabImage($url,$filename="") {  
  3.   if($url==""):return false;endif;  
  4.  
  5.   if($filename=="") {  
  6.     $ext=strrchr($url,".");  
  7.     if($ext!=".gif" && $ext!=".jpg"):return false;endif;  
  8.     $filename=date("dMYHis").$ext;  
  9.   }  
  10.  
  11.   ob_start();  
  12.   readfile($url);  
  13.   $img = ob_get_contents();  
  14.   ob_end_clean();  
  15.   $size = strlen($img);  
  16.  
  17.   $fp2=@fopen($filename"a");  
  18.   fwrite($fp2,$img);  
  19.   fclose($fp2);  
  20.  
  21.   return $filename;  
  22. }  
  23.  
  24.  
  25. $img=GrabImage("http://news.bbc.co.uk/images/_1978837_detector_ap100.jpg","");  
  26. if($img):echo '<pre><img src="'.$img.'"></pre>';else:echo "false";endif;     
  27.  
  28.    
  29.  
  30.  
  31. ?>  

dedecms中的:

  1. if(!empty($saveremoteimg))  
  2.  {  
  3.          $body = stripslashes($body);  
  4.          $img_array = array();  
  5.          preg_match_all("/(src|SRC)=[\"|'| ]{0,}(http:\/\/(.*)\.(gif|jpg|jpeg|bmp|png))/isU",$body,$img_array);  
  6.          $img_array = array_unique($img_array[2]);  
  7.          set_time_limit(0);  
  8.          $imgUrl = $img_dir."/".strftime("%Y%m%d",time());  
  9.          $imgPath = $base_dir.$imgUrl;  
  10.          $milliSecond = strftime("%H%M%S",time());  
  11.          if(!is_dir($imgPath)) @mkdir($imgPath,0777);  
  12.          foreach($img_array as $key =>$value)  
  13.          {  
  14.                  $value = trim($value);  
  15.                  $get_file = @file_get_contents($value);  
  16.                  $rndFileName = $imgPath."/".$milliSecond.$key.".".substr($value,-3,3);  
  17.                  $fileurl = $imgUrl."/".$milliSecond.$key.".".substr($value,-3,3);  
  18.                  if($get_file)  
  19.                  {  
  20.                          $fp = @fopen($rndFileName,"w");  
  21.                          @fwrite($fp,$get_file);  
  22.                          @fclose($fp);  
  23.                  }  
  24.                  $body = ereg_replace($value,$fileurl,$body);  
  25.          }  
  26.          $body = addslashes($body);  
  27.  }