Laravel 7/6 Resize Image Before Upload Example

https://www.itsolutionstuff.com/post/laravel-6-resize-image-before-upload-exampleexample.html

Laravel 7/6 Resize Image Before Upload Example

we will use intervention/image package for resize or resize image in laravel. intervention provide a resize function that will take a three parameters. three parameters are width, height and callback function. callback function is a optional.

So here i write step by step tutorial of resize image in laravel. So just follow bellow step to create image example for your project.

Step 1: Install Laravel 7/6

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

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

Step 2: Install Intervention Image Package

In second step we will install intervention/image for resize image. this package through we can generate thumbnail image for our project. so first fire bellow command in your cmd or terminal:

composer require intervention/image

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

config/app.php

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

Read Also: Laravel 6 CRUD Application Tutorial

Step 3: Create Routes

In this step we will add routes and controller file so first add bellow 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 resizeing image so first run bellow command :

php artisan make:controller ImageController

After this command you can find ImageController.php file in your app/Http/Controllers directory. open ImageController.php file and put bellow 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

resources/views/resizeImage.blade.php

Read Also: Laravel 6 Generate PDF File Tutorial

@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 directory in your public folder (1)images and (2)thumbnail and please give permission to that folder and check....

I hope it can help you...

Last updated