How to Create Thumbnail Images using PHP

 

 

How to Create Thumbnail Images using PHP

 

This tutorial will describe how to create thumbnail images using PHP.you learn how to batch process a whole folder of images and create their thumbnails.

REQUIREMENTS

1) Latest version of PHP, MySql Database and Apache Web Server(httpd) are installed on your system.

2) You need to have the GD image library installed and activated in your PHP.

Below we will create a PHP script that contains two functions. The first one scans a provided directory for any .JPG images and, for each one, creates a thumbnail in the specified folder using the GD image functions. The second function creates an HTML file in the same directory as the script, which contains all of the thumbnails with links to the original images.

The code below creates a first function named createThumbs that will get three parameters. The first and the second is correspondingly the path to the directory that contains original images and the path to the directory in which thumbnails will be placed. The third parameter is the width you want for the thumbnail images.

The second  function named createGallery which gets two parameters (the relative paths to the directories in which images and thumbnails are stored) and creates an HTML page which contains all of the thumbnails with links to the original images.

<?php

function createThumbs( $pathToImages, $pathToThumbs, $thumbWidth )

{

// open the directory

$dir = opendir( $pathToImages );

// loop through it, looking for any/all JPG files:

while (false !== ($fname = readdir( $dir )))

{

// parse path for the extension

$info = pathinfo($pathToImages . $fname);

// continue only if this is a JPEG image

if ( strtolower($info[‘extension’]) == ‘jpg’ )

{

echo “Creating thumbnail for {$fname} <br />”;
// load image and get image size

$img = imagecreatefromjpeg( “{$pathToImages}{$fname}” );

$width = imagesx( $img );

$height = imagesy( $img );

// calculate thumbnail size

$new_width = $thumbWidth;

$new_height = floor( $height * ( $thumbWidth / $width ) );

// create a new tempopary 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 );

// save thumbnail into a file

imagejpeg( $tmp_img, “{$pathToThumbs}{$fname}” );

}  }

// close the directory

closedir( $dir );

}
function createGallery( $pathToImages, $pathToThumbs )

{

echo “Creating gallery.html <br />”;

$output = “<html>”;

$output .= “<head><title>Thumbnails</title></head>”;

$output .= “<body>”;

$output .= “<table cellspacing=”0″ cellpadding=”2″ width=”500″>”;

$output .= “<tr>”;

// open the directory

$dir = opendir( $pathToThumbs );

$counter = 0;

// loop through the directory

while (false !== ($fname = readdir($dir)))

{

// strip the . and .. entries out

if ($fname != ‘.’ && $fname != ‘..’)

{

$output .= “<td valign=”middle” align=”center”><a href=”{$pathToImages}{$fname}”>”;

$output .= “<img src=”{$pathToThumbs}{$fname}” border=”0″ />”;

$output .= “</a></td>”;
$counter += 1;

if ( $counter % 4 == 0 ) {$output .= “</tr><tr>”; }

}  }

// close the directory

closedir( $dir );

$output .= “</tr>”;

$output .= “</table>”;

$output .= “</body>”;

$output .= “</html>”;

// open the file

$fhandle = fopen( “gallery.html”, “w” );

// write the contents of the $output variable to the file

fwrite( $fhandle, $output );

// close the file

fclose( $fhandle );

}
// call createThumb function and pass to it as parameters the path

// to the directory that contains images, the path to the directory

// in which thumbnails will be placed and the thumbnail’s width.

// We are assuming that the path will be a relative path working

// both in the filesystem, and through the web for links

createThumbs(“images/”,”thumbs/”,50);

// call createGallery function and pass to it as parameters the path

// to the directory that contains images and the path to the directory

// in which thumbnails will be placed. We are assuming that

// the path will be a relative path working

// both in the filesystem, and through the web for links

createGallery(“images/”,”thumbs/”);

?>

At first we open the directory with images and iterate through it, looking for all .JPG files. Next we create thumbnails for each image in the directory. To create a thumbnail, we read in the file using the imagecreatefromjpeg() function and calculate the new thumbnail size.imagesx() and imagesy() functions return the width and height of the image respectively. Next we create a new image using the imagecreatetruecolor(). Finally, we copy and resize the original file with the imagecopyresized() function and save thumbnail with imagejpeg().

Next function open the directory with thumbnails. Next we iterate through files in the directory and put the HTML into a string variable. The variable contents then written into a file usingfopen()fwrite(), and fclose() functions.

THANX