各位大哥麻烦解析下下面的函数每一步,小弟研究了很久也不明!
/**
    按照比例改变图片大小(非生成缩略图)
    @param string $img 图片路径
    @param int $max_w 最大缩放宽
    @param int $max_h 最大缩放高
*/
function chImageSize ($img,$max_w,$max_h)
{
    $size = @getimagesize($img);
        $w = $size[0];
        $h     =    $size[1];
    //计算缩放比例
    @$w_ratio = $max_w / $w;
    @$h_ratio =    $max_h / $h;
    //决定处理后的图片宽和高
    if( ($w <= $max_w) && ($h <= $max_h) )
    {
        $tn['w'] = $w;
        $tn['h'] = $h;
    }
    else if(($w_ratio * $h) < $max_h)
    {
        $tn['h'] = ceil($w_ratio * $h);
        $tn['w'] = $max_w;
    }
    else
    {
        $tn['w'] = ceil($h_ratio * $w);
        $tn['h'] = $max_h;
    }
    $tn['rc_w'] = $w;
    $tn['rc_h'] = $h;
    return $tn ;
}

解决方案 »

  1.   

    function chImageSize ($img,$max_w,$max_h) 

        $size = @getimagesize($img); //取得图象大小
            $w = $size[0]; //图象宽
            $h    =    $size[1]; //图象高
        //计算缩放比例 
        @$w_ratio = $max_w / $w; //宽度缩放比例
        @$h_ratio =    $max_h / $h; //高度缩放比例
        //决定处理后的图片宽和高 
        if( ($w <= $max_w) && ($h <= $max_h) ) //缩放后宽和高都小于等于原来的宽和高则用原来的宽和高
        { 
            $tn['w'] = $w; 
            $tn['h'] = $h; 
        } 
        else if(($w_ratio * $h) < $max_h) //否则
        { 
            $tn['h'] = ceil($w_ratio * $h); 
            $tn['w'] = $max_w; 
        } 
        else 
        { 
            $tn['w'] = ceil($h_ratio * $w); 
            $tn['h'] = $max_h; 
        } 
        $tn['rc_w'] = $w; 
        $tn['rc_h'] = $h; 
        return $tn ; //返回缩放后的宽和高
    }
      

  2.   

        $size = @getimagesize($img);
    从$img这个路径中取得图片的宽,和高,返回结果是数组,存储在$size中        $w = $size[0];
            $h    =    $size[1];
    输出宽和高,$size[0]的意思是$size这个数组中的第一个元素。
        //决定处理后的图片宽和高
        if( ($w <= $max_w) && ($h <= $max_h) )
        {
            $tn['w'] = $w;
            $tn['h'] = $h;
    判断,如果原图片的大小小于最大缩放宽和高,那么原图不变
        }
        else if(($w_ratio * $h) < $max_h)
        {
            $tn['h'] = ceil($w_ratio * $h);
            $tn['w'] = $max_w;
    否则,进行缩放。
        }
        else
        {
            $tn['w'] = ceil($h_ratio * $w);
            $tn['h'] = $max_h;
        }
        $tn['rc_w'] = $w;
        $tn['rc_h'] = $h;
        return $tn ;
    返回$tn,其中包含处理后的宽和高
    }
      

  3.   

    else if(($w_ratio * $h) < $max_h) 
    这句话中的$w_ratio不是应该为$h_ratio吗?