Соотношение сторон изображения вмешательства
Я хочу изменить размеры своих изображений с помощью функциональных возможностей 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();});