相应地调整图像宽度和比例高度

时间:2011-09-23 07:09:26

标签: php image gd scale

我正在编写一个上传脚本,我目前正在使用gd调整图像大小的方法,一般来说效果很好。唯一的问题是,当用户上传肖像图像时,它们会对齐到中心,并且画布外部的部分会被切断。我添加了一个检查来识别图像是否是肖像,但现在我需要调整一些代码来操作我想要的图像。

例如,如果我上传分辨率为2000x3000像素的图像,我需要完成以下操作:

  • 自动将宽度缩放到800px。
  • 相应地将高度缩放到新宽度,保持原始比例。

我设法缩放它,但它只保留原始分辨率,这不是想要的效果。也许这里有人可以帮助我?

提前致谢// 乔纳森

编辑:我设法通过使用我的旧技术解决它,只是在上传的图像方向是portait时更改尺寸。谢谢你的回答!

1 个答案:

答案 0 :(得分:0)

简单缩放功能

function img_scale($source,$width,$height,$extra='border=0')
{
     $w=$width;
     $h=$height;
     $size = @getimagesize($abu_source); 
    if($w > $size[0] && $h > $size[1] )
    {
        $neww = $size[0];//$w;
        $newh = $size[1];//$h;
    }
    else if( $w < $size[0] && $h > $size[1] )
    {
        $diff=$size[0]-$w;
        $dec_per=(100*$diff)/$size[0];
        $neww=$size[0]-(($size[0]*$dec_per)/100);
        $newh=$size[1]-(($size[1]*$dec_per)/100);
    }
    else if( $w > $size[0] && $h < $size[1] )
    {
        $diff=$size[1]-$h;
        $dec_per=(100*$diff)/$size[1];
        $newh=$size[1]-(($size[1]*$dec_per)/100);
        $neww=$size[0]-(($size[0]*$dec_per)/100);
    }
    else//( $w < $size[0] && $h < $size[0] )
    {
        if( ($size[0]-$w) >= ($size[1]-$h))
        {
            $diff=$size[0]-$w;
            $dec_per=(100*$diff)/$size[0];
            $neww=$size[0]-(($size[0]*$dec_per)/100);
            $newh=$size[1]-(($size[1]*$dec_per)/100);
            $cc='w';
        }
        else
        {
            $diff=$size[1]-$h;
            $dec_per=(100*$diff)/$size[1];
            $newh=$size[1]-(($size[1]*$dec_per)/100);
            $neww=$size[0]-(($size[0]*$dec_per)/100);
            $cc='h';                    
        }
    }
    return "<img src='".$source."' width='".$neww."' height='".$newh."'  ".$extra." >";
}