From 18dd6cd92dcc1cd0d86869b9460ede5471d7e510 Mon Sep 17 00:00:00 2001 From: Clement Desmidt Date: Tue, 10 Mar 2020 18:13:42 +0100 Subject: [PATCH] :poop: Commence la mise en cache des miniatures Start #9 --- app/Http/Controllers/HomeController.php | 6 ++++ app/Http/Controllers/ImageController.php | 44 +++++++++++++----------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 77307f4..65bde6d 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -10,6 +10,8 @@ use DateTime; use Illuminate\Http\UploadedFile; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Redirect; +use Intervention\Image\Constraint; +use Intervention\Image\Facades\Image; class HomeController extends Controller { @@ -145,6 +147,10 @@ class HomeController extends Controller $uploaded_document = $validated_data['file']; $file_name = $uploaded_document->getClientOriginalName(); $uploaded_document->storeAs(Auth::user()->getFolder(), $file_name); + $img = Image::make($uploaded_document->getRealPath()); + $img->resize(300, null, static function (Constraint $constraint) { + $constraint->aspectRatio(); + })->save(sprintf('%s/%s/%s', storage_path('app'), Auth::user()->getFolder(), sprintf('300-%s', $file_name))); $data['image'] = $file_name; } diff --git a/app/Http/Controllers/ImageController.php b/app/Http/Controllers/ImageController.php index 57e0daf..8b8a49c 100644 --- a/app/Http/Controllers/ImageController.php +++ b/app/Http/Controllers/ImageController.php @@ -31,38 +31,40 @@ class ImageController extends Controller throw new UnauthorizedHttpException('Cette image ne vous appartient pas.'); } - $path = sprintf('%s/%s/%s', storage_path('app'), Auth::user()->getFolder(), $image); - if (!is_readable($path)) { - throw new NotFoundHttpException(); - } - - - $img = Image::make($path); - - if ('o:full' !== $options) { + $original = sprintf('%s/%s/%s', storage_path('app'), Auth::user()->getFolder(), $image); + $thumb = sprintf('%s/%s/300-%s', storage_path('app'), Auth::user()->getFolder(), $image); + $img = Image::make($original); + if ('o:full' === $options) { + if (!is_readable($original)) { + throw new NotFoundHttpException(); + } + } elseif (!is_readable($thumb)) { + if (!is_readable($original)) { + throw new NotFoundHttpException(); + } $options = explode('!', $options); $width = null; $height = null; foreach ($options as $option) { - $current_option = explode(':', $option); - foreach ($current_option as $current_option_name => $current_option_value) { - switch ($current_option_name) { - case 'w': - $width = $current_option_value; - break; - case 'h': - $height = $current_option_value; - break; - } + [$current_option_name, $current_option_value] = explode(':', $option); + switch ($current_option_name) { + case 'w': + $width = $current_option_value; + break; + case 'h': + $height = $current_option_value; + break; } } //http://image.intervention.io/getting_started/ $img->resize($width, $height, static function (Constraint $constraint) { $constraint->aspectRatio(); - }); + })->save(sprintf('%s/%s/%s', storage_path('app'), Auth::user()->getFolder(), sprintf('300-%s', $image))); + } else { + $img = Image::make($thumb); } - return $img->response(File::extension($path)); + return $img->response(File::extension($original)); } /**