How do I use PHP to create a thumbnail image?

Creating a Thumbnail Image using PHP

In this blog post, we will learn how to create a thumbnail image using PHP. Thumbnails are smaller versions of images, often used to provide a preview of a larger image or to save bandwidth when displaying multiple images on a web page. We will be using the GD library, which comes pre-installed with PHP, to accomplish this task.

Let’s begin by creating a simple PHP function that will generate a thumbnail image from an existing image file.

Step 1: Install GD Library (if not already installed)

Before we start, make sure the GD library is installed on your server. You can check if it is enabled by creating a PHP file with the following code:


Upload this file to your server and access it through your browser. Look for the “GD” section; if it’s present, the library is installed and enabled.

If it’s not installed, you’ll need to enable it. For example, on an Ubuntu-based system, you can use the following command:

sudo apt-get install php-gd

Step 2: Create the Function to Generate a Thumbnail

Here is the function that will create a thumbnail image from a source image.

function create_thumbnail($source_image, $destination, $thumbnail_width, $thumbnail_height) {
    // Get the dimensions of the source image
    list($source_width, $source_height) = getimagesize($source_image);

    // Calculate aspect ratio
    $source_ratio = $source_width / $source_height;

    // Create a new blank image with the desired thumbnail dimensions
    $thumbnail = imagecreatetruecolor($thumbnail_width, $thumbnail_height);

    // Load the source image into memory
    $source = imagecreatefromjpeg($source_image);

    // Calculate the new dimensions for the thumbnail
    if ($thumbnail_width / $thumbnail_height > $source_ratio) {
        $new_height = $thumbnail_height;
        $new_width = $thumbnail_height * $source_ratio;
    } else {
        $new_width = $thumbnail_width;
        $new_height = $thumbnail_width / $source_ratio;

    // Resize the source image and copy it to the thumbnail
    imagecopyresampled($thumbnail, $source, 0, 0, 0, 0, $new_width, $new_height, $source_width, $source_height);

    // Save the thumbnail image to the destination file
    imagejpeg($thumbnail, $destination);

    // Free up memory

Step 3: Usage Example

Now, let’s use the function to create a thumbnail from an existing image file.

require 'create_thumbnail.php';

// Set the source image file and destination for the thumbnail
$source_image = 'path/to/your/image.jpg';
$destination = 'path/to/save/thumbnail.jpg';

// Set the desired width and height for the thumbnail
$thumbnail_width = 150;
$thumbnail_height = 150;

// Call the function to create the thumbnail
create_thumbnail($source_image, $destination, $thumbnail_width, $thumbnail_height);

In this example, we require the ‘create_thumbnail.php’ file that contains our function. We then set the source image path, the destination path for the thumbnail, and the desired width and height. Finally, we call the ‘create_thumbnail’ function to generate the thumbnail image.


In this blog post, we learned how to create a thumbnail image using PHP and the GD library. This function can be easily integrated into your projects to generate thumbnail images on the fly. Keep in mind that this example uses JPEG as the input image format, but you can easily modify the function to support other image formats, such as PNG or GIF, by using the appropriate imagecreatefrom* and image* functions in the GD library.

Feel free to customize the function according to your requirements, and happy coding!

Got question?

Submit it here

© All rights reserved.