+ -
当前位置:首页 → 问答吧 → PHP处理压缩、剪裁大量图片问题

PHP处理压缩、剪裁大量图片问题

时间:2011-12-15

来源:互联网

各位师傅大侠们好,小弟最近想做一个类似于美食图片分享的网站。现在碰到一个问题,就是对用户上传的图片进行压缩、按照不同的尺寸进行裁剪。按照用户的习惯,肯定是单个文件大,文件多。 因为之前没有做过类似的功能,所以无处下手。

个人觉的不可能仅仅用PHP的代码对图像处理就能完成的,不知道有没有类似的第三方插件能解决这个问题。或者其他的解决方案! 在这里谢谢大家了!

作者: nb8724   发布时间: 2011-12-15

你所说的不同尺寸裁剪等问题是指在客户端用户可以框选图片的一部分,然后后台我们帮他裁剪他所框选的那一部分,并进行尺寸的改变,以及大小压缩?

作者: hellodifa   发布时间: 2011-12-15

PHP code
//图片压缩并另存函数

//示例:

//if(!scal_pic('pic.jpg','new_pic.jpg')){ die('您上传的图片格式存在问题!'); //然后再删除掉图片文件。。。 }
function scal_pic($file_name,$file_new){
        //验证参数
        if(!is_string($file_name) || !is_string($file_new)){
                return false;
        }
        //获取图片信息
        $pic_scal_arr = @getimagesize($file_name);
        if(!$pic_scal_arr){
                return false;
        }
        //获取图象标识符
        $pic_creat = '';
        switch($pic_scal_arr['mime']){
                case 'image/jpeg':
                        $pic_creat = @imagecreatefromjpeg($file_name);
                        break;
                case 'image/gif':
                        $pic_creat = @imagecreatefromgif($file_name);
                        break;
                case 'image/png':
                        $pic_creat = @imagecreatefrompng($file_name);
                        break;
                case 'image/wbmp':
                        $pic_creat = @imagecreatefromwbmp($file_name);
                        break;
                default:
                        return false;
                        break;
        }
        if(!$pic_creat){
                return false;
        }
        //判断/计算压缩大小
        $max_width = 111;//最大宽度,象素,高度不限制
        $min_width = 15;
        $min_heigth = 20;
        if($pic_scal_arr[0]<$min_width || $pic_scal_arr[1]<$min_heigth){
                return false;
        }
        $re_scal = 0;
        if($pic_scal_arr[0]>$max_width){
                $re_scal = ($max_width / $pic_scal_arr[0]);
        }
        $re_width = round($pic_scal_arr[0] * $re_scal);
        $re_height = round($pic_scal_arr[1] * $re_scal);
        //创建空图象
        $new_pic = @imagecreatetruecolor($re_width,$re_height);
        if(!$new_pic){
                return false;
        }
        //复制图象
        if(!@imagecopyresampled($new_pic,$pic_creat,0,0,0,0,$re_width,$re_height,$pic_scal_arr[0],$pic_scal_arr[1])){
                return false;
        }
        //输出文件
        $out_file = '';
        switch($pic_scal_arr['mime']){
                case 'image/jpeg':
                        $out_file = @imagejpeg($new_pic,$file_new);
                        break;
                case 'image/jpg':
                        $out_file = @imagejpeg($new_pic,$file_new);
                        break;
                case 'image/gif':
                        $out_file = @imagegif($new_pic,$file_new);
                        break;
                case 'image/bmp':
                        $out_file = @imagebmp($new_pic,$file_new);
                        break;
                default:
                        return false;
                        break;
        }
        if($out_file){
                return true;
        }else{
                return false;
        }

}




以前弄的 希望对你有帮助

作者: levinstong   发布时间: 2011-12-15

热门下载

更多