如果上传一个图片,图片是数码相机照的图片,图片很大,很占系统空间,如何能让上传的图片变小。不用客户更改,不加上传限制,直接通过程序员代码的填写,直接让图片的大小减小.谢谢!

解决方案 »

  1.   

    在百度搜索:图片上传生成缩略图 php推荐一个链接:http://hi.baidu.com/supsea/blog/item/55f47ebf3927a90618d81f3b.html
      

  2.   

    好的PHP上传文件大小都是在php.ini中设置的。如果做小图,就要把上传的图压缩一下就可以了。但是长宽也相应的小了。
      

  3.   

    自己写程序生产小图。gd或者imagick都可以
      

  4.   

    做缩略图
    imagecreatefromjpeg
    imagecreatetruecolor
    imagecopyresampled
    imagejpeg
      

  5.   

    ACDSEE输出质量调到85%,然后重新保存。
      

  6.   


    <?PHP
    /*
    $source_img = "../base_img/index.jpg";
    $target_dir='../base_img/';
    $new_width=500;
    $new_height=500;
    $if_cut=0;
    $target_name='HanroadClass';
    $img=new HanroadClass;
    $img->HrResize($source_img,$target_dir,$target_name,$new_width,$new_height,$if_cut); 
    */
    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);
            if($img_type=="gif"){
    imagealphablending($new_img, false);
    imagesavealpha($new_img, true);
    }
    if($img_type=="png"){
    imagesavealpha($temp_img,true);
        imagealphablending($new_img,false);
          imagesavealpha($new_img,true);
    }
           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"){
    $bgcolor=imagecolorallocate($new_img,0,0,0);
    $bgcolor=imagecolortransparent($new_img,$bgcolor);
    $bgcolor=imagecolorallocatealpha($new_img, 0, 0, 0,127);
    imagefill($new_img, 0, 0, $bgcolor);
    imagegif($new_img,$tar_url);
    }
            if($img_type=="png")imagepng($new_img,$tar_url);
    imagedestroy($source_img);
    imagedestroy($new_img);
        } 

    ?>