Добавить пустое пространство изображения, используя фреймворк Laravel 5 изображения интервенций, чтобы сделать квадратное изображение



Предположим, что у меня есть любимый размер квадрата, и в этом случае он имеет ширину и высоту 2236 px.



Мне нужно сохранить мои изображения в этом размере на моем сервере, используя php intervention package.



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



Пожалуйста, взгляните на эту фотографию.:
мой план



И вот некоторые реальные примеры:
Пример 1
Пример 2



Есть ли у кого-нибудь опыт в этой ситуации, И знаете ли вы, как я могу это сделать?

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

547   2  

2 ответов:

Ну, спасибо @Anton за его намек, Я сделал это, чтобы решить свою проблему:

Изображение представляет собой горизонтальный прямоугольник, вертикальный прямоугольник или квадрат.

Я написал эти строки кода для каждой ситуации, и это отлично работает для моего случая

$img    = Image::make($image->getRealPath());

$width  = $img->width();
$height = $img->height();


/*
*  canvas
*/
$dimension = 2362;

$vertical   = (($width < $height) ? true : false);
$horizontal = (($width > $height) ? true : false);
$square     = (($width = $height) ? true : false);

if ($vertical) {
    $top = $bottom = 245;
    $newHeight = ($dimension) - ($bottom + $top);
    $img->resize(null, $newHeight, function ($constraint) {
        $constraint->aspectRatio();
    });

} else if ($horizontal) {
    $right = $left = 245;
    $newWidth = ($dimension) - ($right + $left);
    $img->resize($newWidth, null, function ($constraint) {
        $constraint->aspectRatio();
    });

} else if ($square) {
    $right = $left = 245;
    $newWidth = ($dimension) - ($left + $right);
    $img->resize($newWidth, null, function ($constraint) {
        $constraint->aspectRatio();
    });

}

$img->resizeCanvas($dimension, $dimension, 'center', false, '#ffffff');
$img->save(public_path("storage/{$token}/{$origFilename}"));
/*
* canvas
*/
<?php
$width = 2236;
$height = 2236;

$img = Image::make('image.jpg');

// we need to resize image, otherwise it will be cropped 
if ($img->width() > $width) { 
    $img->resize($width, null, function ($constraint) {
        $constraint->aspectRatio();
    });
}

if ($img->height() > $height) {
    $img->resize(null, $height, function ($constraint) {
        $constraint->aspectRatio();
    }); 
}

$img->resizeCanvas($width, $height, 'center', false, '#ffffff');
$img->save('out.jpg');

Comments

    Ничего не найдено.