Jump to content

Create a thumbnail from an image in PHP


fer987

Recommended Posts

Hi! my code uploads an image and saves it to an upload folder, but I want to create a thumbnail of it.

 

For example, if I upload a 1400x1000 JPG, I would like to resize the image and it has to respect the proportion given a maximum size.

 

if I say the maximum width/height is 250px, the image should be thumbnailed according to the max height/width, and in proportion with the width/height

 

Thanks in advance

 

Fernando

Link to comment
Share on other sites

There are plenty of such scripts freely available if you look. below is some code I have laying around which should work:

 

function createThumb($src_file, $dst_w, $dst_h)
{
    //Validate that valid sizes and readable image passed
    if ($dst_w<1 || $dst_h<1) { return false; }
    if (!list($src_w, $src_h, $src_type) = @getimagesize($src_file)) { return false; }

    //Supported image types & the functions to use
    $createFromSource = array(
        IMAGETYPE_JPEG => 'imagecreatefromjpeg',
        IMAGETYPE_GIF  => 'imagecreatefromgif',
        IMAGETYPE_PNG  => 'imagecreatefrompng',
        IMAGETYPE_WBMP => 'imagecreatefromwbmp',
        IMAGETYPE_XBM  => 'imagecreatefromwxbm',
    );

    //Validate that image type is supported
    if (!$createFromSource[$src_type]) { return false; }

    //Default values for thumb creation
    $dst_x=0; $dst_y=0; $src_x=0; $src_y=0;

    //Resize based upon source/destination ratios
    $ratio = min(($dst_w/$src_w), ($dst_h/$src_h));
    $dst_h  = $src_h * $ratio;
    $dst_w  = $src_w * $ratio;

    //Read the source image
    $src_image = $createFromSource[$src_type]($src_file);

    //Create the thumb
    $dst_image = imagecreatetruecolor($dst_w, $dst_h);
    imagecopyresampled($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h);
    return $dst_image;
}

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.