php获取远程图片保存到本地

发布时间:2020-03-22编辑:脚本学堂
分享一例php获取远程图片的代码,php获取远程图片文件并保存到本地,不错的一段代码,有需要的朋友参考下。

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

代码:
 

复制代码 代码示例:

<?php
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("http://img.jb200.com/images/_1978837_detector_ap100.jpg","");
if($img):echo '<pre><img src="'.$img.'"></pre>';else:echo "false";endif;   
?>

下面分享一个dedecms中的获取远程图片的函数代码。
 

复制代码 代码示例:
<?php
if(!empty($saveremoteimg))
 {
  $body = stripslashes($body);
  $img_array = array();
  preg_match_all("/(src|SRC)=["|'| ]{0,}(http://(.*).(gif|jpg|jpeg|bmp|png))/isU",$body,$img_array);
  $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);
 }