热搜:NVER 

php 封存远程图片到本地

2024-04-25 20:57:01
 php 封存远程图片到本地

php 保存远程图片到本地

显示远程图片:


?<?php ? ?
header('Content-Type:image/jpg');    
echo file_get_contents("http://www.baidu.com/img/baidu_logo.gif");    
?>  

?

第一种: 精确型

?

<?php     
    
// 变量说明:     
// $url 是远程图片的完整URL地址,不能为空。    
// $filename 是可选变量: 如果为空,本地文件名将基于时间和日期     
// 自动生成.     
    
function get_photo($url,$filename='',$savefile='test/')   
{     
    $imgArr = array('gif','bmp','png','ico','jpg','jepg');  
  
    if(!$url) return false;  
    
    if(!$filename) {     
      $ext=strtolower(end(explode('.',$url)));     
      if(!in_array($ext,$imgArr)) return false;  
      $filename=date("dMYHis").'.'.$ext;     
    }     
  
    if(!is_dir($savefile)) mkdir($savefile, 0777);  
    if(!is_readable($savefile)) chmod($savefile, 0777);  
      
    $filename = $savefile.$filename;  
  
    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=get_photo("http://www.baidu.com/img/baidu_logo.gif");     
 echo $img ? '
' : "false";  

?

第二种:从文章中提取图片,并保存至本地

function getImg($str){  
    $str = stripslashes($str);  
    $pattern = "/]*src\=\"(([^>]*)(jpg|gif|png|bmp|jpeg))\"/i";   //获取所有图片标签的全部信息  
    preg_match_all($pattern, $str, $matches);  
        
    return $matches[1];   //$matches[1]中就是所想匹配的结果,结果为数组  
}  
  
    $str = <<
?