Resizing image с помощью php

294
13 января 2017, 11:34

Доброго времени суток, у меня возникла проблема при смене размера фото, у меня есть код, как меняет размер фото, на первой фото он сработал хорошо с размером 350х200, так же мне нужно чтобы он работал при размере 100х800, чтобы картинку не искривляло, а просто добавляли поля, а сама картинка чтобы была в центре, может кто сталкивался с подобной проблемой

$size = array($source_width, $source_height); 
        $thumb = imagecreatetruecolor($w, $h); 
        $src_aspect = $size[0] / $size[1]; 
        $thumb_aspect = $w / $h; 
        if($src_aspect < $thumb_aspect) {               
            $scale = $h / $size[1];
            $new_size = array($h * $src_aspect, $h);
            $src_pos = array(($size[0] * $scale - $w) / $scale / 2, 0); 
        } else {
            $new_size = array($w, $h);
            $src_pos = array(0,0);
        }
        $new_size[0] = max($new_size[0], 1);
        $new_size[1] = max($new_size[1], 1);
        imagecopyresampled($thumb, $source_gdim, 0, 0, $src_pos[0], $src_pos[1], $new_size[0], $new_size[1], $size[0], $size[1]);
        imagejpeg($thumb, "images/photo/resize/"."$name"."($w"."x"."$h"." 1).");
        return $thumb; 

Answer 1

Условие $src_aspect < $thumb_aspect определяет с каких сторон добавлять поля (с боков или сверху-снизу).

Эта часть кода считает поля с боков:

    if($src_aspect < $thumb_aspect) {      
        $scale = $h / $size[1];
        $new_size = array($h * $src_aspect, $h);
        $src_pos = array(($size[0] * $scale - $w) / $scale / 2, 0); 

Так сделайте аналогично и для полей сверху и снизу (Тут так-же как и в первой части, только поменять местами высоту и ширину):

    } else {
        $scale = $w / $size[0];
        $new_size = array($w , $w* $src_aspect);
        $src_pos = array(0, ($size[1] * $scale - $h) / $scale / 2); 
    }
READ ALSO
Сумирование суммы по нарастающей

Сумирование суммы по нарастающей

Делаю вывод сумм по месяцам:

392
Как тестировать загрузку файлов? [требует правки]

Как тестировать загрузку файлов? [требует правки]

Как передать через тест файл, например картинку?

306
Проблема с выходом из аккаунта и удалением Cookies при использовании ЧПУ

Проблема с выходом из аккаунта и удалением Cookies при использовании ЧПУ

Как работает: В настройках CMS Указывю ссылки вида /?qa=123/why-do-birds-sing Залогиненные пользователи через сайт - без проблем выходят из ак-ка Залогиненнные...

392