PHP can be used to create and manipulate image files in a variety of different image formats. This post shows how to create thumbnail image in the same directory as the original image. Instead of GD library, I used utilities from ImageMagick suite of tools so your PHP shouldn’t have a GD module installed. convert with “-channel a” option will save transparency of the PNG and GIF images.
If you are looking for GD version of PHP thumbnail function, please see Create thumbnail with PHP (2).
/** * function creates a thumbnail image in the same directory with the prefix 'tn' * thumb should fit to the defined box (second parameter) * only bigger images are processed, while smaller images are just copied * function preserves PNG and GIF transparency * * @param string $image1_path - full path to the image * @param integer $box - box dimension */ function create_thumb($image1_path, $box=200){ // get image size $identify = shell_exec("identify $image1_path"); // read image geometry preg_match('/(\d+)x(\d+)/', $identify, $matches); $g1 = $matches[0]; // image geometry $width1 = $matches[1]; // image width $height1 = $matches[2]; // image height // prepare thumb name in the same directory with prefix 'tn' $image2_path = dirname($image1_path) . '/tn_' .basename($image1_path); // make image smaller if doesn't fit to the box if ($width1 > $box || $height1 > $box){ // set the largest dimension $width2 = $height2 = $box; // calculate smaller thumb dimension (proportional) if ($width1 < $height1) $width2 = round(($box / $height1) * $width1); else $height2 = round(($box / $width1) * $height1); // set thumbnail geometry $g2 = $width2 .'x' .$height2; // save thumbnail image to the file system("convert -channel a -size $g1 $image1_path -resize $g2 $image2_path"); } // else just copy the image else copy($image1_path, $image2_path); }
I also wrote Resize images with PHP where you can read about resizing all JPG images inside a current directory. After saving images from my camera to the computer, I needed a tool to prepare images for the Web upload. With small command line PHP script, images are converted to the lower resolution and saved to the separate subdirectory.