February 4, 2015 11:53 am

Image Upload and Resize using Image Intervention in Laravel

In this tutorial we will cover one of the most used feature Image Upload functionality in any web application over Internet using Laravel 4 and Image Intervention package. Let’s see how we can do Image upload and resizing by allowing people to upload images to our website via a From.

Image Upload and Resize using Image Intervention in Laravel

Image Upload Form

Let’s create a view which will contain our upload form with name form.blade.php in app/views/  directory.

<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">

<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap-theme.min.css">

<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>

<style type="text/css">
	/*    --------------------------------------------------
	:: Login Section
	-------------------------------------------------- */
#login {
    padding-top: 50px
}
#login .form-wrap {
    width: 30%;
    margin: 0 auto;
}
#login h1 {
    color: #1fa67b;
    font-size: 18px;
    text-align: center;
    font-weight: bold;
    padding-bottom: 20px;
}
#login .form-group {
    margin-bottom: 25px;
}
#login .checkbox {
    margin-bottom: 20px;
    position: relative;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    -o-user-select: none;
    user-select: none;
}
#login .checkbox.show:before {
    content: '\e013';
    color: #1fa67b;
    font-size: 17px;
    margin: 1px 0 0 3px;
    position: absolute;
    pointer-events: none;
    font-family: 'Glyphicons Halflings';
}
#login .checkbox .character-checkbox {
    width: 25px;
    height: 25px;
    cursor: pointer;
    border-radius: 3px;
    border: 1px solid #ccc;
    vertical-align: middle;
    display: inline-block;
}
#login .checkbox .label {
    color: #6d6d6d;
    font-size: 13px;
    font-weight: normal;
}
#login .btn.btn-custom {
    font-size: 14px;
	margin-bottom: 20px;
}
#login .forget {
    font-size: 13px;
	text-align: center;
	display: block;
}

/*    --------------------------------------------------
	:: Inputs & Buttons
	-------------------------------------------------- */
.form-control {
    color: #212121;
}
.btn-custom {
    color: #fff;
	background-color: #1fa67b;
}
.btn-custom:hover,
.btn-custom:focus {
    color: #fff;
}

/*    --------------------------------------------------
    :: Footer
	-------------------------------------------------- */
#footer {
    color: #6d6d6d;
    font-size: 12px;
    text-align: center;
}
#footer p {
    margin-bottom: 0;
}
#footer a {
    color: inherit;
}
</style>
<section id="login">
    <div class="container">
    	<div class="row">
    	    <div class="col-xs-12">
        	    <div class="form-wrap">
                <h1>Image Upload</h1>
                	{{ Form::open(array('url' => '/upload','files' => true)) }}
 						
 						<ul class="errors"> 
 						@foreach($errors->all() as $message)
 							<li>{{ $message }}</li>
 						@endforeach
 						</ul>
 						
					 	<div class="form-group">
                			{{ Form::label('avatar', 'Avatar',array('class' => 'sr-only')) }}
					    	{{ Form::file('avatar') }}
                		</div>
					   
					 
					    {{ Form::submit('Upload', array('class' => 'btn btn-custom btn-lg btn-block')) }}
					 
					{{ Form::close() }}

        	    </div>
    		</div> <!-- /.col-xs-12 -->
    	</div> <!-- /.row -->
    </div> <!-- /.container -->
</section>

This Image upload form was built by using laravel 4 Form helpers to generate a simple form with image upload input type by setting ‘files’ => true parameter.
When we accessed the view using our route url http://domain.com/.

Image Intervention in Laravel

Post Action in Laravel 4 Route or Controller

Let’s dive into the post action code, but before that let’s check whether the image was uploaded or not to do operations on that image file.

  • Check if image was uploaded or not
  • Let’s find out the file and move it onto our server
  • Using the path of the image on our server, open and resize our Image
  • Save the resize image

Let’s implement these steps either in our Route or Controller

Route::post('/upload', function(){

	if (Input::hasFile('avatar'))
	{
	    $file = Input::file('avatar');
	    $file->move('uploads', $file->getClientOriginalName());
	}
});

The above code covers first 2 steps. We check if a image file named avatar is present or not. If so we move that image into the uploads directory keeping the name it was uploaded with.

Adding Intervention for Image Resizing

To get started with Intervention, add it to our composer.json file.

"require": {
		"laravel/framework": "4.2.*",
		"intervention/image": "dev-master"
	},

And run composer update from the root of our project

composer update

Next we have to add providers and array aliases names for Intervention package in app/config/app.php file

'Intervention\Image\ImageServiceProvider'

'Image' => 'Intervention\Image\Facades\Image'

Resizing Images

With Intervention package installed, we simply need to call the methods to resize image and save it into our server.

Route::post('/upload', function(){

	if (Input::hasFile('avatar'))
	{
	    $file = Input::file('avatar');
	    $file->move('uploads', $file->getClientOriginalName());

	    $image = Image::make(sprintf('uploads/%s', $file->getClientOriginalName()))->resize(200, 200)->save();
	}
});

That’s it we have resized the image and saved the image at public/uploads directory. We can add watermark to the image also using another method called insert().

$img->insert('public/watermark.png');

There are lot of other methods we can try from Image Intervention package please check official documentation.

Thanks

Author Huzoor Bux

I am Huzoor Bux from Karachi (Pakistan). I have been working as a PHP Developer from last 5+ years, and its my passion to learn new things and implement them as a practice. Basically I am a PHP developer but now days exploring more in HTML5, CSS and jQuery libraries.


Tutorial Categories:

2 responses to “Image Upload and Resize using Image Intervention in Laravel”

  1. Kpop Vietsub says:

    Great!
    Upload image, resize default code php.
    You customizing auto rezie. Thank

  2. tanveer says:

    Can you help me in laravel php problems like upload images and session

Leave a Reply

Your email address will not be published. Required fields are marked *