Revision: 21150
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 4, 2009 14:16 by gms8994
Initial Code
/** * Resizes and renames an image file * @return resource An image identifier * @return false on error * @param string $source Path to source image * @param string $dest Path to output image * @param int $n_height New height to set image to * @param int $n_width New width to set image to * @param bool $overwrite Allow overwrite of image file * @author Glen Solsberry <[email protected]> */ function resize_and_name_image($source, $dest, $n_height, $n_width, $overwrite = false) { if (!file_exists($source)) { error_log("$source doesn't exist"); return false; } if (file_exists($dest) && !$overwrite) { error_log("$dest exists, and we're not overwriting"); return false; } list($width, $height, $type, $attr) = getimagesize($source); if ($width > $height) { $n_height = ($n_width / $width) * $height; } else { $n_width = ($n_height / $height) * $width; } $mime_type = image_type_to_mime_type($type); $mime_type = preg_replace("/^.*?\//", "", $mime_type); // call the appropriate imagecreatefrom function for this image if (function_exists("imagecreatefrom" . $mime_type)) { $img = call_user_func("imagecreatefrom" . $mime_type, $source); } else { display_error("invalid_image_format"); error_log("imagecreatefrom{$mime_type} doesn't exist"); return false; } $new_img = imagecreatetruecolor($n_width, $n_height); // imagecolorallocatealpha($new_img, 0, 0, 0, 0); // get and reallocate transparency-color $transindex = imagecolortransparent($img); if ($transindex >= 0) { $transcol = imagecolorsforindex($img, $transindex); $transindex = imagecolorallocatealpha($new_img, $transcol['red'], $transcol['green'], $transcol['blue'], 127); imagefill($new_img, 0, 0, $transindex); } else if ($transindex == -1) { imagecolortransparent($new_img, imagecolorallocate($new_img, 0, 0, 0)); imagealphablending($new_img, false); imagesavealpha($new_img, true); } imagecopyresampled($new_img, $img, 0, 0, 0, 0, $n_width, $n_height, $width, $height); // stuff the existing file off in to a backup directory if (function_exists("image" . $mime_type)) { // we need to get the end path $my_local_dest = preg_replace("/^(.*)\/(.*?)$/", "$1/source/$2", $dest); $my_local_dest = preg_replace("/^(.*)_.*/", "$1.$mime_type", $my_local_dest); // make sure that the directory exists if (! is_dir(dirname($my_local_dest))) { $res = mkdir(dirname($my_local_dest)); } $res = call_user_func("image" . $mime_type, $img, $my_local_dest); if (!$res) { error_log("image{$mime_type} failed!!!!"); } } imagedestroy($img); // write the image out to the new file, using imagepng/imagegif/etc $my_dest_type = preg_replace("/^.*\.(.*?)$/", "$1", $dest); if (function_exists("image" . $my_dest_type)) { $res = call_user_func("image" . $my_dest_type, $new_img, $dest); imagedestroy($new_img); return $res; } else { error_log("image{$my_dest_type} doesn't exist"); imagedestroy($new_img); return false; } }
Initial URL
Initial Description
This properly handles transparencies for PNG/GIF.
Initial Title
Resize and Name Image
Initial Tags
resize, image
Initial Language
PHP