Laravel with Packages | Laravel 7/6 Resize Image Before Upload Example

Raviya Technical
3 min readJun 16, 2022

I will explain to you step by step tutorial on resizing images in the laravel 7/6 application using image intervention. we will learn how to use the image intervention package with laravel on 7/6. we will generate a thumbnail image on upload in laravel on 7/6.

we will use e intervention/image package to resize or resize images in laravel. interventioprovidesde a resize function that will take three parameters. three parameters are width, height, and a callback function. the callback function is optional.

So here I write a step-by-step tutorial of resin e images in laravel. So just follow the below step to create an image example for your project.

Step 1: Install Laravel 7/6

In this step, if you haven’t a laravel 6 application setup then we have to get a fresh laravel 6 application. So run the below command and get a clean fresh laravel 6 application.

composer create-project --prefer-dist laravel/laravel blog

Step 2: Install Intervention Image Package

In a second step, we will install the intervention/image for resizing the image. With this package through, we can generate thumbnail images for our project. so first fire the below command in your cmd or terminal:

composer require intervention/image

Now we need to add the provider path and alias path in the config/app.php file so open that file and add the below code.

config/app.php

return [......$provides => [............,'Intervention\Image\ImageServiceProvider'],$aliases => [..........,'Image' => 'Intervention\Image\Facades\Image']]

Step 3: Create Routes

In this step, we will add routes and controller files so first add the below route in your routes.php file.

routes/web.php

Route::get('resizeImage', 'ImageController@resizeImage');Route::post('resizeImagePost', 'ImageController@resizeImagePost')->name('resizeImagePost');

Step 4: Create Controller File

Now require to create new ImageController for image uploading and resizing image so first run bellow command :

php artisan make:controller ImageController

After this comm, you can fit an ImageController.php file in your app/Http/Controllers directory. open the ImageController.php file and below low code in that file.

app/Http/Controllers/ImageController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use Image;
class ImageController extends Controller
{

/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function resizeImage()
{
return view('resizeImage');
}

/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function resizeImagePost(Request $request)
{
$this->validate($request, [
'title' => 'required',
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);

$image = $request->file('image');
$input['imagename'] = time().'.'.$image->extension();

$destinationPath = public_path('/thumbnail');
$img = Image::make($image->path());
$img->resize(100, 100, function ($constraint) {
$constraint->aspectRatio();
})->save($destinationPath.'/'.$input['imagename']);

$destinationPath = public_path('/images');
$image->move($destinationPath, $input['imagename']);

return back()
->with('success','Image Upload successful')
->with('imageName',$input['imagename']);
}

}

Step 5: View File and Create Upload directory

Ok, in this last step we will create the resizeImage.blade.php file for the photo upload form and manage together an error message and also a success message. So first create the resizeImage.blade.php file and put the below code:

resources/views/resizeImage.blade.php

@extends('layouts.app')@section('content')<div class="container"><h1>Resize Image Uploading Demo</h1>@if (count($errors) > 0)<div class="alert alert-danger"><strong>Whoops!</strong> There were some problems with your input.<br><br><ul>@foreach ($errors->all() as $error)<li>{{ $error }}</li>@endforeach</ul></div>@endif@if ($message = Session::get('success'))<div class="alert alert-success alert-block"><button type="button" class="close" data-dismiss="alert">×</button><strong>{{ $message }}</strong></div><div class="row"><div class="col-md-4"><strong>Original Image:</strong><br/><img src="/images/{{ Session::get('imageName') }}" /></div><div class="col-md-4"><strong>Thumbnail Image:</strong><br/><img src="/thumbnail/{{ Session::get('imageName') }}" /></div></div>@endif{!! Form::open(array('route' => 'resizeImagePost','enctype' => 'multipart/form-data')) !!}<div class="row"><div class="col-md-4"><br/>{!! Form::text('title', null,array('class' => 'form-control','placeholder'=>'Add Title')) !!}</div><div class="col-md-12"><br/>{!! Form::file('image', array('class' => 'image')) !!}</div><div class="col-md-12"><br/><button type="submit" class="btn btn-success">Upload Image</button></div></div>{!! Form::close() !!}</div>@endsection

Ok, at last create two directories in your public folder (1)images and (2)thumbnail, and please give permission to that folder and check….

I hope it can help you…

--

--