Измените ширину изображения и высоту масштаба соответственно - PullRequest
0 голосов
/ 23 сентября 2011

Я пишу скрипт загрузки, и в настоящее время я использую способ изменения размера изображений с помощью gd, который в целом работает хорошо. Единственная проблема заключается в том, что когда пользователи загружают портретные изображения, они выравниваются по центру, и части вне холста обрезаются. Я добавил проверку, чтобы определить, является ли изображение портретным или нет, но теперь мне нужно настроить некоторый код, чтобы манипулировать изображениями так, как они мне нужны.

Например, если я загружаю изображение с разрешением 2000x3000 пикселей, мне нужно сделать следующее:

  • Автоматически масштабирует ширину до 800px.
  • Масштабируйте высоту в соответствии с новой шириной, сохраняя исходное соотношение.

Мне удалось масштабировать его, но оно просто сохраняет исходное разрешение, что не является желаемым эффектом. Может быть, кто-то здесь может мне помочь?

Заранее спасибо // Jonathan

РЕДАКТИРОВАТЬ: мне удалось решить ее, используя мою старую технику, и просто изменить размеры, когда ориентация загруженного изображения была портретной. Спасибо за ваши ответы!

1 Ответ

0 голосов
/ 23 сентября 2011

простая функция масштабирования

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." >";
}
...