private function _getcontent($content)
    {
               $img_dir='../Public/Img/Ycimg'; //远程图片抓取存放到本地路径
                $body = stripslashes($content);
                $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]);
                //  dump($img_array);
                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)
                {
                    
                        if (strpos($value,'bamaol.com')==false)
                        {
                            $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);
                            $filesmall=$imgUrl."/bamaol_".$milliSecond.$key.".".substr($value,-3,3);  //缩略图
                            
                           
                            if($get_file)
                            {
                                    $fp = @fopen($rndFileName,"w");
                                   //$fp1 = @fopen($filesmall,"w");
                                    @fwrite($fp,$get_file);
                                   // @fwrite($fp1,$get_file);
                                    @fclose($fp);
                                   // @fclose($fp1);
                            }
                            $this->img2thumb($fileurl,$filesmall);//调用缩略图方法
                            $body = ereg_replace($value,$filesmall,$body);
                        }
                }
                return $body;
    }
    
    
     /**
     * 生成缩略图
     * @param string     源图绝对完整地址{带文件名及后缀名}
     * @param string     目标图绝对完整地址{带文件名及后缀名}
     * @param int        缩略图宽{0:此时目标高度不能为0,目标宽度为源图宽*(目标高度/源图高)}
     * @param int        缩略图高{0:此时目标宽度不能为0,目标高度为源图高*(目标宽度/源图宽)}
     * @param int        是否裁切{宽,高必须非0}
     * @param int/float  缩放{0:不缩放, 0<this<1:缩放到相应比例(此时宽高限制和裁切均失效)}
     * @return boolean
     */
   private function img2thumb($src_img, $dst_img, $width = 150, $height =150, $cut =1, $proportion = 0)
    {
        //$src_img='../Public/Img/Ycimg/20131105/2105260.jpg';
          
        if(!is_file($src_img))
        {
            return false;
        }
    
        $ot = $this->fileext($dst_img);
        $otfunc = 'image' . ($ot == 'jpg' ? 'jpeg' : $ot);
        $srcinfo = getimagesize($src_img);
        $src_w = $srcinfo[0];
        $src_h = $srcinfo[1];
        $type  = strtolower(substr(image_type_to_extension($srcinfo[2]), 1));
        $createfun = 'imagecreatefrom' . ($type == 'jpg' ? 'jpeg' : $type);
    
        $dst_h = $height;
        $dst_w = $width;
        $x = $y = 0;
      
        /**
         * 缩略图不超过源图尺寸(前提是宽或高只有一个)
         */
        if(($width> $src_w && $height> $src_h) || ($height> $src_h && $width == 0) || ($width> $src_w && $height == 0))
        {
            $proportion = 1;
        }
        if($width> $src_w)
        {
            $dst_w = $width = $src_w;
        }
        if($height> $src_h)
        {
            $dst_h = $height = $src_h;
        }
    
        if(!$width && !$height && !$proportion)
        {
            return false;
        }
        if(!$proportion)
        {
            if($cut == 0)
            {
                if($dst_w && $dst_h)
                {
                    if($dst_w/$src_w> $dst_h/$src_h)
                    {
                        $dst_w = $src_w * ($dst_h / $src_h);
                        $x = 0 - ($dst_w - $width) / 2;
                    }
                    else
                    {
                        $dst_h = $src_h * ($dst_w / $src_w);
                        $y = 0 - ($dst_h - $height) / 2;
                    }
                }
                else if($dst_w xor $dst_h)
                {
                    if($dst_w && !$dst_h)  //有宽无高
                    {
                        $propor = $dst_w / $src_w;
                        $height = $dst_h  = $src_h * $propor;
                    }
                    else if(!$dst_w && $dst_h)  //有高无宽
                    {
                        $propor = $dst_h / $src_h;
                        $width  = $dst_w = $src_w * $propor;
                    }
                }
            }
            else
            {
                if(!$dst_h)  //裁剪时无高
                {
                    $height = $dst_h = $dst_w;
                }
                if(!$dst_w)  //裁剪时无宽
                {
                    $width = $dst_w = $dst_h;
                }
                $propor = min(max($dst_w / $src_w, $dst_h / $src_h), 1);
                $dst_w = (int)round($src_w * $propor);
                $dst_h = (int)round($src_h * $propor);
                $x = ($width - $dst_w) / 2;
                $y = ($height - $dst_h) / 2;
            }
        }
        else
        {
            $proportion = min($proportion, 1);
            $height = $dst_h = $src_h * $proportion;
            $width  = $dst_w = $src_w * $proportion;
        }
    
        $src = $createfun($src_img);
      
        $dst = imagecreatetruecolor($width ? $width : $dst_w, $height ? $height : $dst_h);
        $white = imagecolorallocate($dst, 255, 255, 255);
        imagefill($dst, 0, 0, $white);
    
        if(function_exists('imagecopyresampled'))
        {
            imagecopyresampled($dst, $src, $x, $y, 0, 0, $dst_w, $dst_h, $src_w, $src_h);
        }
       else
        {
            imagecopyresized($dst, $src, $x, $y, 0, 0, $dst_w, $dst_h, $src_w, $src_h);
        }
         
        $otfunc($dst, $dst_img);
        imagedestroy($dst);
        imagedestroy($src);
     /*   $fp = @fopen($dst_img,"w");
                                
        @fwrite($fp,$src_img);
                                
        @fclose($fp); */
        return true;
    }
    
   function fileext($file)
    {
        return pathinfo($file, PATHINFO_EXTENSION);
    }

php远程图片抓取存放到本地路径并生成缩略图的更多相关文章

  1. Git从远程仓库里拉取一条本地不存在的分支方法

    Git从远程仓库里拉取一条本地不存在的分支方法 从远程仓库里拉取一条本地不存在的分支时,进入到对应目录先执行git fetch然后再执行git checkout -b 本地分支名 origin/远程分 ...

  2. arpspoof+driftnet+ ARP欺骗简单图片抓取

    arpspoof+driftnet+ ARP欺骗简单图片抓取 driftnet是一款简单而使用的图片捕获工具,可以很方便的在网络数据包中抓取图片.该工具可以实时和离线捕获指定数据包中是图片 环境 受害 ...

  3. [python应用]python简单图片抓取

    前言 emmmm python简单图片抓取 1 import requests 2 import threading 3 import queue 4 from subprocess import P ...

  4. git从远程仓库里拉取一条本地不存在的分支

    查看远程分支和本地分支 git branch -va 当我想从远程仓库里拉取一条本地不存在的分支时: git checkout -b 本地分支名 origin/远程分支名 例如: 切换远程分支 git ...

  5. 用WebRequest +HtmlAgilityPack 从外网抓取数据到本地

    相信大家对于WebRequest 并不陌生,我们在C#中发请求的方式,就是创建一个WebRequest .那么如果我们想发一个请求到外网,比如国内上不了的一些网站,那么该怎么做呢? 其实WebRequ ...

  6. [原创]超强C#图片上传,加水印,自动生成缩略图源代码

    <%@ Page Language=“C#“ AutoEventWireup=“true“ %> <%@ Import Namespace=“System“ %> <%@ ...

  7. xheditor编辑器上传截图图片抓取远程图片代码

    xheditor是一款很不错的开源编辑器,用起来很方便也很强大. 分享一个xheditor直接上传截图的问题解决方法. 第一步.设置参数 localUrlTest:/^https?:\/\/[^\/] ...

  8. git中使用命令将远程仓库拉取项目在本地文件夹

    在有些时候,我们往往从github或者gitlab或者coding上面直接下载项目下来运行,但是这种情况往往没有使用git远程拉取来的安全(或者叫装逼), 所以这里我以gitLab为例子,说一下如何将 ...

  9. Python爬虫入门教程 18-100 煎蛋网XXOO图片抓取

    写在前面 很高兴我这系列的文章写道第18篇了,今天写一个爬虫爱好者特别喜欢的网站煎蛋网http://jandan.net/ooxx,这个网站其实还是有点意思的,网站很多人写了N多的教程了,各种方式的都 ...

随机推荐

  1. uinavigation样式

    UINavigationController* pNav = [[UINavigationController alloc] initWithRootViewController:pView]; [p ...

  2. tool debug Android phonegap app

    phonegap debug 最近发现了一个可以调试phonegap的工具  在Google浏览器上调试Android真机的APP  这是好啊!!!跟Mac上的Safari 浏览器一样调试iOS 的A ...

  3. 【MySQL】触发器学习

    MySQL手册中对触发器的定义是: 触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象.表必须是永久性表,不能将触发程序与临时表与视图关联起来. 相同触发程序动作时间和事件的给定表 ...

  4. Linux之档案管理

    1:档案类型[1] d :目录 -:档案 l:链接档 b:装置文件中可存储接口设备 c:装置文件中串行设备,例如:键盘,鼠标 2:RWX: R:read (可读),W:write(可写),X:excu ...

  5. 高仿精仿开心网应用android源码

    今天早上看到了一个不错的安卓应用源码项目,真的非常不错高仿精仿开心网应用android源码下载,希望大家能够喜欢.       原文:http://android.662p.com/thread-29 ...

  6. rpm软件包

    安装软件:rpm -i software.rpm卸载软件:rpm -e software升级形式安装:rpm -U software-new.rpmrpm支持通过http.ftp协议安装软件:rpm ...

  7. SQL Server存储过程(转载)

    Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø ...

  8. 如何调节datagridview中字体

    设置ColumnHeaderDefaultCellStyle的Font属性 或者 编程 datagridview.Columns[index].DefaultCellStyle.Font.Size=“ ...

  9. C# 获取web.config配置文件内容

    1.web.config提供对客户端应用程序配置文件的访问. 其有两个属性1.ConnectionStrings 获取当前应用程序默认配置的 ConnectionStringsSection 数据. ...

  10. Vue.js学习 Item11 – 组件与组件间的通信

    什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能.在有 ...