/********************************************************** * function resize: * * = creates a resized image based on the max width * specified as well as generates a thumbnail from * a rectangle cut from the middle of the image. * * @dir = directory image is stored in * @newdir = directory new image will be stored in * @img = the image name * @newimg = the image new name * @max_w = the max width of the resized image * @max_h = the max height of the resized image * @th_x = The starting point of the x-coordinate * @th_y = The starting point of the y-coordinate * @th_w = the width of the thumbnail * @th_h = the height of the thumbnail * @cut = Whether to need cut out * @center = whether cut from the middle of the image * **********************************************************/ function resize($dir, $newdir, $img, $newimg, $max_w, $max_h, $th_x = '', $th_y = '', $th_w = '', $th_h = '',$cut = FALSE,$center = FALSE) { // set destination directory if (!$newdir) $newdir = $dir; if (!$newimg) $newimg = $img; // get original images width and height list($or_w, $or_h, $or_t) = getimagesize($dir.$img); switch($or_t){ // original image case 1: $or_image = imagecreatefromgif($dir.$img); break; case 2: $or_image = imagecreatefromjpeg($dir.$img); break; case 3: $or_image = imagecreatefrompng($dir.$img); break; default: return '不支持的图像格式'; break; } // make sure image is a jpeg // if ($or_t == 2) { // obtain the image's ratio // $ratio = ($or_h / $or_w); $ratio = ($max_h / $max_w); // original image // $or_image = imagecreatefromjpeg($dir.$img); // resize image? if ($or_w > $max_w || $or_h > $max_h) { // resize by height, then width (height dominant) if ($max_h < $max_w) { $rs_h = $max_h; $rs_w = $rs_h / $ratio; } // resize by width, then height (width dominant) else { $rs_w = $max_w; $rs_h = $ratio * $rs_w; } // copy old image to new image $rs_image = imagecreatetruecolor($rs_w, $rs_h); imagecopyresampled($rs_image, $or_image, 0, 0, 0, 0, $rs_w, $rs_h, $or_w, $or_h); } // image requires no resizing else { $rs_w = $or_w; $rs_h = $or_h; $rs_image = $or_image; } // generate resized image DrawImage($rs_image, $newdir.$newimg,$or_t,100); //裁剪生成指定的大小 start------------------- if ($cut){ $th_image = imagecreatetruecolor($th_w, $th_h); // cut out a rectangle from the resized image and store in thumbnail if ($center){ $new_w = (($rs_w / 2) - ($th_w / 2)); $new_h = (($rs_h / 2) - ($th_h / 2)); }else { $new_w = $th_x; $new_h = $th_y; } imagecopyresampled($th_image, $rs_image, 0, 0, $new_w, $new_h, $rs_w, $rs_h, $rs_w, $rs_h); // generate thumbnail DrawImage($th_image, $newdir.'th_'.$newimg,$or_t,100); @ImageDestroy($th_image); } //生成指定的大小 end------------------- // return true; //} // Image type was not jpeg! /* else { return false; } */ @ImageDestroy($rs_image); } /** * @resource image * @filename * @quality * @type **/ function DrawImage($resource,$filename,$type,$quality){ switch($type){ // original image case 1: $or_image = imagegif($resource,$filename); break; case 2: $or_image = imagejpeg($resource,$filename,$quality); break; case 3: $or_image = imagepng($resource,$filename); break; } }