From e1bdef98d6f7838e464bb9ce7a84f9ed27de7e7b Mon Sep 17 00:00:00 2001 From: Nabeel Shahzad Date: Mon, 13 May 2019 07:52:07 -0500 Subject: [PATCH] Keep uploaded avatar images within the same aspect ratio #309 --- .../Controllers/Frontend/ProfileController.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Frontend/ProfileController.php b/app/Http/Controllers/Frontend/ProfileController.php index c4257b52..2cec3dfe 100644 --- a/app/Http/Controllers/Frontend/ProfileController.php +++ b/app/Http/Controllers/Frontend/ProfileController.php @@ -155,7 +155,20 @@ class ProfileController extends Controller $avatar = $request->file('avatar'); $file_name = $user->pilot_id.'.'.$avatar->getClientOriginalExtension(); $path = "avatars/{$file_name}"; - Image::make($avatar)->resize(config('phpvms.avatar.width'), config('phpvms.avatar.height'))->save(public_path('uploads/avatars/'.$file_name)); + + // Create the avatar, resizing it and keeping the aspect ratio. + // https://stackoverflow.com/a/26892028 + $w = config('phpvms.avatar.width'); + $h = config('phpvms.avatar.height'); + + $canvas = Image::canvas($w, $h); + $image = Image::make($avatar)->resize($w, $h, static function ($constraint) { + $constraint->aspectRatio(); + }); + + $canvas->insert($image); + $canvas->save(public_path('uploads/avatars/'.$file_name)); + $req_data['avatar'] = $path; }