php图片缩放代码-按比例缩放或截取指定大小的缩略图 非常好用的一个方法

来源:互联网 发布:国服lol有mac版本吗 编辑:程序博客网 时间:2024/05/28 05:16
/********************************************************** * 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;       }}


原创粉丝点击