<?PHP 
class HanroadClass 

    /**//********************** 
    利用PHP的GD库生成缩略图。 
    支持图片格式:jpg,gif,png 
 
    $source_img:  源图象完整路径 
    $target_dir:  目标图象目录 
    $target_name: 目标图象名称 
    $new_width:   目标图象宽 
    $new_height:  目标图象高 
    $if_cut:      是否裁图 
        1(裁图): 裁图则按设置的大小生成目标图象 
        0(不裁): 不裁则按比例生成目标图象 
    **********************/ 
    function HrResize($source_img,$target_dir,$target_name,$new_width,$new_height,$if_cut) 
    { 
        //图片类型 
        $img_type = strtolower(substr(strrchr($source_img,"."),1)); 
 
        //图象的完整目标路径 
        $tar_url = $target_dir."/".$target_name.".".$img_type; 
 
        //初始化图象 
        if($img_type=="jpg") $temp_img = imagecreatefromjpeg($source_img); 
        if($img_type=="gif") $temp_img = imagecreatefromgif($source_img); 
        if($img_type=="png") $temp_img = imagecreatefrompng($source_img); 
 
        //原始图象的宽和高 
        $old_width  = imagesx($temp_img); 
        $old_height = imagesy($temp_img); 
 
        //改变前后的图象的比例 
        $new_ratio = $new_width/$new_height; 
        $old_ratio = $old_width/$old_height; 
 
        //生成新图象的参数 
        //情况一:裁图 则按设置的大小生成目标图象 
        if($if_cut=="1") 
        { 
            $new_width  = $new_width; 
            $new_height = $new_height; 
            //高度优先 
            if($old_ratio>=$new_ratio) 
            { 
                $old_width  = $old_height*$new_ratio; 
                $old_height = $old_height; 
            } 
            //宽度优先 
            else 
            { 
                $old_width  = $old_width; 
                $old_height = $old_width/$new_ratio; 
            } 
        } 
        //情况二:不裁图 则按比例生成目标图象 
        else 
        { 
            $old_width  = $old_width; 
            $old_height = $old_height; 
            //高度优先 
            if($old_ratio>=$new_ratio) 
            { 
                $new_width  = $new_width; 
                $new_height = $new_width/$old_ratio; 
            } 
            //宽度优先 
            else 
            { 
                $new_width  = $new_height*$old_ratio; 
                $new_height = $new_height; 
            } 
        } 
        //生成新图片 
        $new_img = imagecreatetruecolor($new_width,$new_height); 
        imagecopyresampled($new_img,$temp_img,0,0,0,0,$new_width,$new_height,$old_width,$old_height); 
 
        if($img_type=="jpg") imagejpeg($new_img,$tar_url); 
        if($img_type=="gif") imagegif($new_img,$tar_url); 
        if($img_type=="png") imagepng($new_img,$tar_url); 
    } 

?>

解决方案 »

  1.   

    <?php
    function LoadGif ($imgname) {
        $im = @ImageCreateFromGIF ($imgname); /* Attempt to open */
        if (!$im) { /* See if it failed */
            $im = ImageCreate (150, 30); /* Create a blank image */
            $bgc = ImageColorAllocate ($im, 255, 255, 255);
            $tc  = ImageColorAllocate ($im, 0, 0, 0);
            ImageFilledRectangle ($im, 0, 0, 150, 30, $bgc); 
            /* Output an errmsg */
            ImageString($im, 1, 5, 5, "Error loading $imgname", $tc); 
        }
        return $im;
    }
    function LoadJpeg ($imgname) {
        $im = @ImageCreateFromJPEG ($imgname); /* Attempt to open */
        if (!$im) { /* See if it failed */
            $im = ImageCreate (150, 30); /* Create a blank image */
            $bgc = ImageColorAllocate ($im, 255, 255, 255);
            $tc  = ImageColorAllocate ($im, 0, 0, 0);
            ImageFilledRectangle ($im, 0, 0, 150, 30, $bgc);
            /* Output an errmsg */
            ImageString ($im, 1, 5, 5, "Error loading $imgname", $tc); 
        }
        return $im;
    }
    function runSmall($imgname){
    $size   = GetImageSize($imgname);

    $img_type = substr(trim($imgname), -3, 3);
    $img_type = strtoupper($img_type);
    if ($img_type == "JPG" ) {
    $src_im = LoadJpeg($imgname);
    }elseif ($img_type == "GIF"){
    $src_im = LoadGif($imgname);
    }
    $dst_im = imagecreatetruecolor (400,300);
    imagepalettecopy( $dst_im, $src_im);
    imagecopyresized( $dst_im, $src_im, 0, 0, 0, 0,400,300,$size[0],$size[1]);
    if (function_exists("imagejpeg")) {
    Header("Content-type: image/jpeg");
         ImageJPEG($dst_im);
    }}
    runSmall($imageUrl);
    ?>
      

  2.   

    imagejpeg这个能显示出生成的缩略图,可是要把这个缩略图保存到一个目录里面,怎么弄????
      

  3.   

    function HrResize($source_img,$target_dir,$target_name,$new_width,$new_height,$if_cut) $target_dir这个就是目录了。