"Edward Peloke" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > won't the gd library do this? > > http://www.php.net/manual/en/function.exif-thumbnail.php > > if there is a better function..I am interested in it also as I have to do > this something this week for a project. > > Thanks, > Eddie
This is what I'm using (of course the GD library is required). Hope the comments make everything clear. I have only used it with JPEGs, though: /** * Creates and saves a thumbnail of the supplied image * * @param string $fileName source file name * @param string $sourceDir source directory * @param string $targetDir target directory * @param string $fileNameExtension file name extension (e.g.: image.jpeg -> image_thumb.jpg) * @param integer $dimension target image * @param string $dimensionType ('height', 'width', 'min') */ function createImageThumbnail($fileName, $sourceDir, $targetDir, $fileNameExtension, $dimension = 60, $dimensionType = 'width') { // Set file name, file, extension and target file name $file = $sourceDir . $fileName; $pointPos = strrpos($fileName, '.'); $extOrig = substr($fileName, $pointPos + 1); $ext = strtolower($extOrig); $targetFileName = substr($fileName, 0, strlen($fileName) - strlen($ext) - 1) . $fileNameExtension; // Create new temp image in memory depending on image type // JPEG if ($ext == 'jpg' || $ext == 'jpeg') { $img = imagecreatefromjpeg($file); } // GIF elseif ($ext == 'gif') { $img = imagecreatefromgif($file); } // PNG elseif ($ext == 'png') { $img = imagecreatefrompng($file); } // None of the above, return false else { return false; } // Get source dimensions $sourceWidth = imagesx($img); $sourceHeight = imagesy($img); // Determine smaller side if dimension type is 'min' if ($dimensionType == 'min') { // if width is smaller than height if ($sourceWidth < $sourceHeight) { $dimensionType = 'width'; } else { $dimensionType = 'height'; } } // Calculate dimension if ($dimensionType == 'width') { // Calculate target height relative to supplied target width // (Resize bigger so that dirty right hand pixels will be outside of new image) $targetWidth = $dimension; $targetHeight = round(($targetWidth / $sourceWidth) * $sourceHeight, 0); } else { // Calculate target width relative to supplied target height // (Resize bigger so that dirty right hand pixels will be outside of new image) $targetHeight = $dimension; $targetWidth = round(($targetHeight / $sourceHeight) * $sourceWidth, 0); } // set oversize $overSizePercentage = 1; $overSizePixelsWidth = round($targetWidth * ($overSizePercentage / 100), 0); $overSizePixelsHeight = round($targetHeight * ($overSizePercentage / 100), 0); // Create new-sized target image in memory // (Height should be smaller so that dirty bottom end pixels will be outside) $new_img = imagecreatetruecolor($targetWidth, $targetHeight); if (!$new_img) { // Create new-sized target image in memory // (Height should be smaller so that dirty bottom end pixels will be outside) $new_img = imagecreate($targetWidth, $targetHeight); imagecopyresized($new_img, $img, 0, 0, 0, 0, $targetWidth + $overSizePixelsWidth, $targetHeight + $overSizePixelsHeight, $sourceWidth, $sourceHeight); } else { imagecopyresampled($new_img, $img, 0, 0, 0, 0, $targetWidth + $overSizePixelsWidth, $targetHeight + $overSizePixelsHeight, $sourceWidth, $sourceHeight); } // Save target image depending on image type // JPEG if ($ext == 'jpg' || $ext == 'jpeg') { imagejpeg($new_img, $targetDir . $targetFileName . '.' . $extOrig); } // GIF elseif ($ext == 'gif') { imagegif($new_img, $targetDir . $targetFileName . '.' . $extOrig); } // PNG elseif ($ext == 'png') { imagepng($new_img, $targetDir . $targetFileName . '.' . $extOrig); } // Clear memory imagedestroy($new_img); imagedestroy($img); } Regards, Torsten -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php