Bishiya
Bishiya

Reputation: 43

How can I create custom thumbnails using php gd

i wanted to create a thumbnail with specific custom width & height. The function am using only create a thumbnail with a maximum set width/height.

How do i tweak the below function to give me a defined width/height e.g 50x50, 75x75, 100x100.

$original_photo = "photos/photo.extension";
$newcopy = "photos/thumbnails/photo.extension";
$copy_w = 50;
$copy_h = 50;
$extension = explode('.', 'photo.extension');
$extension = end($extension);

function create_thumbnail($original_photo, $newcopy, $copy_w, $copy_h, $extension) {
    list($original_w, $original_h) = getimagesize($original_photo);
    $scale_ratio = $original_w / $original_h;
    if (($copy_w / $copy_h) > $scale_ratio) {
        $copy_w = $copy_h * $scale_ratio;
    } else {
        $copy_h = $copy_w / $scale_ratio;
    }
    $img = '';
    if ($extension == 'gif') {
        $img = imagecreatefromgif($original_photo);
    } elseif ($extension == 'png') {
        $img = imagecreatefrompng($original_photo);
    } else {
        $img = imagecreatefromjpeg($original_photo);
    }
    $true_color = imagecreatetruecolor($copy_w, $copy_h);
    imagecopyresampled($true_color, $img, 0, 0, 0, 0, $copy_w, $copy_h, $original_w, $original_h);
    if (imagejpeg($true_color, $newcopy, 80) == true) {
        return true;
    } else {
        return false;
    }
}

Upvotes: 2

Views: 2331

Answers (1)

claviska
claviska

Reputation: 12480

Working with images in PHP/GD can be a pain. There are a lot of edge cases, particularly when transparent PNG/GIFs are manipulated.

If possible, I shamelessly recommend a library I wrote to handle things like this: SimpleImage 3.0

Using SimpleImage, you can achieve the desired effect with the following code:

// Load the image from image.jpg
$image = new \claviska\SimpleImage('image.jpg');

// Create a 50x50 thumbnail, convert to PNG, and write to thumbnail.png
$image->thumbnail(50, 50)->toFile('thumbnail.png', 'image/png');

See this page for more details on how the thumbnail method works and available arguments.

Upvotes: 3

Related Questions