PHP 远程图片本地化

来源:互联网 发布:同java编计算器 编辑:程序博客网 时间:2024/06/11 21:26
<?php
 
/**
        远程图片本地化
 
    **/
原文http://php-z.com/thread-2499-1-1.html (出处: PHP-Z)     

  


 function pget($url,$ref=false,$head=false){

             
            $curl = curl_init(); // 启动一个CURL会话
            curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址            
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
            curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
            curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
            if($ref){ curl_setopt($curl, CURLOPT_REFERER, $ref);//带来的Referer
            }else{
            curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
            }
            curl_setopt($curl, CURLOPT_HTTPGET, 1); // 发送一个常规的Post请求
            curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
            curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
            $tmpInfo = curl_exec($curl); // 执行操作
             
            if (curl_errno($curl)) {
                 
                    echo 'Errno'.curl_error($curl);
            }
             
            if($head){ $data['head']=curl_getinfo($curl);}
            curl_close($curl); // 关键CURL会话
            $data['data']=$tmpInfo;
            return $data; // 返回数据
    }
 
 
      
     //远程图片本地化
 function imgLocation($content){
          
         preg_match_all("/src=["|'|\s]{0,}(http:\/\/([^>]*)\.(gif|jpg|png)(.*"))/isU",$content,$img_array);
          
         $timeSrc=date("Ymd", time());
         $img_array = array_unique($img_array[1]);
          
         $imgPath = dirname(__FILE__).'/../um/php/upload/'.$timeSrc;
     
        if(!is_dir($imgPath.'/'))
        {
             mkdir($imgPath, '0777',true);
             chmod($imgPath, '0777');
        }
     
         foreach($img_array as $key=>$value){
              
               $value=str_repeat('"',"",$value);
               $http=pget($value,'$value',true);
                
               $itype=($http['head']['content_type']);
                if(!preg_match("#\.(jpg|gif|png)#i", $itype))
                {
                    if($itype=='image/gif')
                    {
                        $itype = ".gif";
                         
                    }
                    else if($itype=='image/png')
                    {
                        $itype = ".png";
                    }
                    else
                    {
                        $itype = '.jpg';
                    }
                }
                 
                 
                 
                $runds=md5(time());
                $rndFileName=$imgPath."/".$runds.$itype;
               $tp = fopen($rndFileName, 'wb');
                fwrite($tp, $http['data']);
                fclose($tp);
         
                  if(file_exists($rndFileName))
                    {
                         
                        $sqlurl="/home/um/php/upload/".$timeSrc."/".$runds.$itype;
                        $content = str_replace($value, $sqlurl.'"', $content);
                        $content = str_replace("alt=", "", $content);
                     
               
                    }
         }
     
            return $content;
         
     }
      
      
     ?>
原创粉丝点击