Соотношение сторон изображения вмешательства

Я хочу изменить размеры своих изображений с помощью функциональных возможностей Intervention в Laravel 4, но чтобы сохранить пропорции изображения, вот как выглядит мой код:

$image_make         = Image::make($main_picture->getRealPath())->fit('245', '245', function($constraint) { $constraint->aspectRatio(); })->save('images/articles/'.$gender.'/thumbnails/245x245/'.$picture_name);

Проблема в том, что это не поддерживает соотношение сторон моего изображения, спасибо.

Ответ 1

Если вам нужно изменить размер в пределах ограничений, вы должны использовать resize not fit. Если вам также нужно центрировать изображение внутри ограничений, вы должны создать новый canvas и вставить в него измененное изображение:

// This will generate an image with transparent background
// If you need to have a background you can pass a third parameter (e.g: '#000000')
$canvas = Image::canvas(245, 245);

$image  = Image::make($main_picture->getRealPath())->resize(245, 245, function($constraint)
{
    $constraint->aspectRatio();
});

$canvas->insert($image, 'center');
$canvas->save('images/articles/'.$gender.'/thumbnails/245x245/'.$picture_name);

Ответ 2

Просто измените его размер до максимальной ширины/высоты изображения и сделайте холст подходящим для максимальной ширины и высоты

Image::make($main_picture->getRealPath())->resize(245, 245,
    function ($constraint) {
        $constraint->aspectRatio();
    })
->resizeCanvas(245, 245)
->save('images/articles/'.$gender.'/thumbnails/245x245/'.$picture_name, 80);

Ответ 3

вам нужно использовать null по ширине или высоте;

$ img → resize (300, null, function ($ constraint) {$constraint-> aspectRatio();});

или

$ img → resize (null, 200, function ($ constraint) {$constraint-> aspectRatio();});