zoukankan      html  css  js  c++  java
  • php获取远程图片url生成缩略图的方法

    getimg.php
    <?php  
    /** 
    *
    *函数:调整图片尺寸或生成缩略图 
    *返回:True/False 
    *参数:
    *   $Image   需要调整的图片(含路径) 
    *   $Dw=450  调整时最大宽度;缩略图时的绝对宽度 
    *   $Dh=450  调整时最大高度;缩略图时的绝对高度 
    *   $Type=1  1,调整尺寸; 2,生成缩略图 
    */ 
    $phtypes=array('img/gif', 'img/jpg', 'img/jpeg', 'img/bmp', 'img/pjpeg', 'img/x-png'); 
    
    function compressImg($Image,$Dw,$Dh,$Type){  
        IF(!file_exists($Image)){  
            return false;  
        }  
        // 如果需要生成缩略图,则将原图拷贝一下重新给$Image赋值(生成缩略图操作)  
        // 当Type==1的时候,将不拷贝原图像文件,而是在原来的图像文件上重新生成缩小后的图像(调整尺寸操作)  
        IF($Type!=1){  
            copy($Image,str_replace(".","_x.",$Image));  
            $Image=str_replace(".","_x.",$Image);  
        }  
        // 取得文件的类型,根据不同的类型建立不同的对象  
        $ImgInfo=getimagesize($Image);  
        Switch($ImgInfo[2]){  
            case 1:  
                $Img =@imagecreatefromgif($Image);  
                break;  
            case 2:  
                $Img =@imagecreatefromjpeg($Image);  
                Break;  
            case 3:  
                $Img =@imagecreatefrompng($Image);  
                break;  
        }  
        // 如果对象没有创建成功,则说明非图片文件  
        IF(Empty($Img)){  
            // 如果是生成缩略图的时候出错,则需要删掉已经复制的文件  
            IF($Type!=1){  
                unlink($Image);  
            }  
            return false;  
        }  
        // 如果是执行调整尺寸操作则  
        IF($Type==1){  
            $w=ImagesX($Img);  
            $h=ImagesY($Img);  
            $width = $w;  
            $height = $h;  
            IF($width>$Dw){  
                $Par=$Dw/$width;  
                $width=$Dw;  
                $height=$height*$Par;  
                IF($height>$Dh){  
                    $Par=$Dh/$height;  
                    $height=$Dh;  
                    $width=$width*$Par;  
                }  
            } ElseIF($height>$Dh) {  
                $Par=$Dh/$height;  
                $height=$Dh;  
                $width=$width*$Par;  
                IF($width>$Dw){  
                    $Par=$Dw/$width;  
                    $width=$Dw;  
                    $height=$height*$Par;  
                }  
            } Else {  
                $width=$width;  
                $height=$height;  
            }  
            $nImg =ImageCreateTrueColor($width,$height);// 新建一个真彩色画布  
            ImageCopyReSampled($nImg,$Img,0,0,0,0,$width,$height,$w,$h);// 重采样拷贝部分图像并调整大小  
            ImageJpeg($nImg,$Image);// 以JPEG格式将图像输出到浏览器或文件  
            return true;  
        } Else {// 如果是执行生成缩略图操作则  
            $w=ImagesX($Img);  
            $h=ImagesY($Img);  
            $width = $w;  
            $height = $h;  
            $nImg =ImageCreateTrueColor($Dw,$Dh);  
            IF($h/$w>$Dh/$Dw){// 高比较大  
                $width=$Dw;  
                $height=$h*$Dw/$w;  
                $IntNH=$height-$Dh;  
                ImageCopyReSampled($nImg, $Img, 0, -$IntNH/1.8, 0, 0, $Dw, $height, $w, $h);  
            } Else {// 宽比较大  
                $height=$Dh;  
                $width=$w*$Dh/$h;  
                $IntNW=$width-$Dw;  
                ImageCopyReSampled($nImg, $Img,-$IntNW/1.8,0,0,0, $width, $Dh, $w, $h);  
            }  
            ImageJpeg($nImg,$Image);  
            return true;  
        }  
    };  
      
    /** 
     *根据url获取服务器上的图片 
     *$url服务器上图片路径 $filename文件名 
    */  
    function GrabImage($url,$filename="") {  
        if($url=="") return false;  
        if($filename=="") {  
            $ext=strrchr($url,".");  
            if($ext!=".gif" && $ext!=".jpg" && $ext!=".png")  
                return false;  
            $filename=date("YmdHis").$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;  
    }  
    ?>

    调用:

    <?php
    require_once( 'getimg.php' );
    
    $imgPath = 'http://xxx.com/aa.jpg';//远程URL 地址  
    $tempPath = 'adsdf.jpg';//保存图片路径  
      
    if(is_file($tempPath)){  
        unlink($tempPath);  
    }  
      
    $bigImg=GrabImage($imgPath, $tempPath); 
    var_dump(compressImg($bigImg,100,100,1));
     ?>
  • 相关阅读:
    Python练习题 016:猴子吃桃
    Date() 及其 如何验证用户输入的日期是合法的
    关于事件触发的一个小tips
    KVO监听导航栏
    使用CoreText动态下载更换字体
    UICollectionView 的使用
    echarts散点图搭配时间轴
    使用百度echarts画图表的步骤
    canvas画图中drawImage使用
    html5canvas简单画图
  • 原文地址:https://www.cnblogs.com/yutaoyao/p/4414194.html
Copyright © 2011-2022 走看看