Creating Dynamic Image Thumbnail





5
Date Submitted Fri. Aug. 25th, 2006 3:55 AM
Revision 1 of 1
Helper Cyber-Drugs
Tags ??? | phpcode
Comments 0 comments
Before any wars start, I want to clarify that the code below is NOT my own code, but unfortunately I am uncertain where I obtained it from. The code below basically create dynamic thumbnails of an image, you parse the following to it:

Image location,
Maximum Width
Maximum Height

It will then scale your image down, please do not confuse this with converting your image into a square, or whatever shape you are after. The code below will maintain aspect ratio of your image, and will use the values you parse as a guidline. Extremely handy when you are building gallery websites.

<?php

# Get image location
$image_path=$_GET['img'];

# Load image
$img = null;
$ext = strtolower(end(explode('.', $image_path)));
if ($ext == 'jpg' || $ext == 'jpeg') {
    $img = @imagecreatefromjpeg($image_path);
} else if ($ext == 'png') {
    $img = @imagecreatefrompng($image_path);
# Only if your version of GD includes GIF support
} else if ($ext == 'gif') {
    $img = @imagecreatefromgif($image_path);
}

# If an image was successfully loaded, test the image for size
if ($img) {

    # Get image size and scale ratio
    $width = imagesx($img);
    $height = imagesy($img);
    $scale = min($_GET['width']/$width, $_GET['height']/$height);

    # If the image is larger than the max shrink it
    if ($scale < 1) {
        $new_width = floor($scale*$width);
        $new_height = floor($scale*$height);

        # Create a new temporary image
        $tmp_img = imagecreatetruecolor($new_width, $new_height);

        # Copy and resize old image into new image
        imagecopyresized($tmp_img, $img, 0, 0, 0, 0,
                         $new_width, $new_height, $width, $height);
        imagedestroy($img);
        $img = $tmp_img;
    }
}

# Create error image if necessary
if (!$img) {
    $img = imagecreate($_GET['width'], $_GET['height']);
    imagecolorallocate($img,0,0,0);
    $c2 = imagecolorallocate($img,70,70,70);
    imageline($img,0,0,$_GET['width'],$_GET['height'],$c2);
    imageline($img,$_GET['width'],0,0,$_GET['height'],$c2);
}

# Display the image
header("Content-type: image/jpeg");
imagejpeg($img);
?>
 

<IMG src="thumb.php?img=image.jpg&width=200&height=200">
 

Justin Nel

Comments

There are currently no comments for this snippet.

Voting