Resize Image in PHP Using Intervention Image Library

Are you looking for how to resize images in PHP? While working on the web application, we need to create different thumbnail versions of the original image. The thumbnail is the resized version of your original image, In this article, we study how to upload and resize images in PHP.

Why Should We Resize Images?

On the website, there are several scenarios where we need to display a short version of a large image. A popular example is the Image Gallery. In the gallery, we used to display a list of small images. When a user clicks on the small image it will open the large image in the pop-up. Another example is displaying related articles where we show small images along with the title and description of a post.

In these scenarios, we need to generate a small image(thumbnail) using our original image. A small thumbnail reduces the size of your pages. As you are using a small thumbnail, the browser requires low bandwidth for loading the image. It will add some benefits to the website. Some of them are:

  • Improves server performance
  • Reduce bandwidth
  • Improve page speed

That being said, let’s take a look at how to resize the image in PHP.

Getting Started

Intervention Image is an open-source library that acts as an image resizer tool. Under the hood, Intervention Image uses GD Library and Imagick for image processing and manipulation.

For getting started, you need to install the Intervention Image library into your application. I recommend using Composer for the installation of a library.

Open the terminal in your project root directory and run the command below.

composer require intervention/image

After installing the library, you need to include its environment in your application. For this, include below two lines to the PHP file.

<?php
// include composer autoload
require 'vendor/autoload.php';
 
use Intervention\Image\ImageManagerStatic as Image;

In order to upload and resize the image, we need a form where one can browse the image and hit the submit button. Use the below HTML which contains the file input and a submit button.

<form method="post" enctype="multipart/form-data">
    <p><input type="file" name="image" /></p>
    <input type="submit" name="submit" value="Submit">
</form>

Resize Image in PHP Using Intervention Image

We have installed the library and created a form. Next, we have to upload and resize the image on the fly. I am going to create two directories uploads and thumbnails. In the uploads folder, we will store the original image. The thumbnail version of the image will store inside thumbnails directory.

Use the below code which will store the original and thumbnail version of the image into the uploads and thumbnails directories respectively.

<?php
require 'vendor/autoload.php';
 
use Intervention\Image\ImageManagerStatic as Image;

$allowed_mime_type = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif');

if ( isset($_POST['submit']) ) {

    if ( in_array($_FILES['image']['type'], $allowed_mime_type) ) {

        if ( !file_exists('uploads') ) {
            mkdir('uploads', 0755);
        }

        $filename = time().'_'.$_FILES['image']['name'];
        $filepath = 'uploads/'. $filename;
        move_uploaded_file($_FILES['image']['tmp_name'], $filepath);

        if ( !file_exists('uploads/thumbnails') ) {
            mkdir('uploads/thumbnails', 0755);
        }

        $thumbnailpath = 'uploads/thumbnails/'. $filename;
        $img = Image::make($filepath);
        $img->resize(300, null, function ($constraint) {
            $constraint->aspectRatio();
        });
        $img->save($thumbnailpath);
    }
}

In the above code, I passed the width as 300 and resizing the image by maintaining their aspect ratio. You can pass the width value as per your requirement. Keeping the aspect ratio is recommended when resizing the image. Using aspect ratio, the image will not stretch. However, if you are looking for a hard crop then replace the below lines

$img->resize(300, null, function ($constraint) {
    $constraint->aspectRatio();
});

With

$img->resize(300, 150)->save($thumbnailpath);

Conclusion

In this tutorial, we studied how to resize images by maintaining their aspect ratio. We also wrote a code that will hard crop the image. Intervention Image library provides a few more options for a resize method. You may read more about it on their documentation.

Related Articles

If you liked this article, then please subscribe to our YouTube Channel for video tutorials.

1 thought on “Resize Image in PHP Using Intervention Image Library

Leave a Reply

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