上传时如何裁剪图片?

3

我正在做一个社交网络项目,其中有一个选项可以添加/编辑照片,当用户点击按钮时,图像将被上传到数据库并更新...在保存到数据库之前是否可以裁剪图像。


如果您想在保存文件之前在服务器端裁剪图像,可以使用GD图像库创建图像的副本http://www.php.net/manual/en/book.image.php将执行裁剪的函数是http://www.php.net/manual/en/function.imagecopyresampled.php。 - Luke
3个回答

4

只需调用此函数,使用源、目标和所需大小参数即可:)

function cropImage($source,$dest,$whsize) {

                $size = getimagesize($source);
                $w = $size[0];
                $h = $size[1];
                $xratio=$w/$whsize;
                $yratio=$h/$whsize;

                if($xratio > $yratio)$multiplier=$xratio;
                else $multiplier=$yratio;

                $nw=$w/$multiplier;
                $nh=$h/$multiplier;
                switch($size[2]) {
                    case '1':
                    $simg = imagecreatefromgif($source);
                    break;
                    case '2':
                    $simg = imagecreatefromjpeg($source);
                    break;
                    case '3':
                    $simg = imagecreatefrompng($source);
                    break;
                }

                $dimg = imagecreatetruecolor($nw, $nh);

                $wm = $w/$nw;
                $hm = $h/$nh;

                $h_height = $nh/2;
                $w_height = $nw/2;

                if($w> $h) {

                    $adjusted_width = $w / $hm;
                    $half_width = $adjusted_width / 2;
                    $int_width = $half_width - $w_height;

                    imagecopyresampled($dimg,$simg,-$int_width,0,0,0,$adjusted_width,$nh,$w,$h);

                } elseif(($w <$h) || ($w == $h)) {

                    $adjusted_height = $h / $wm;
                    $half_height = $adjusted_height / 2;
                    $int_height = $half_height - $h_height;

                    imagecopyresampled($dimg,$simg,0,-$int_height,0,0,$nw,$adjusted_height,$w,$h);

                } else {
                    imagecopyresampled($dimg,$simg,0,0,0,0,$nw,$nh,$w,$h);
                }
             $dest=$dest.'jpeg';
                imagejpeg($dimg,$dest,100);
        }       

这是图像将被裁剪的方式。 - PHP

3
在客户端,我建议使用JCrop插件进行图像裁剪。 JCrop是一个很好的选择。

1

可以的,将文件从上传目录移动到某个临时目录中,将该位置存储在他们的会话中,然后将其显示给他们进行裁剪,最后将其移动到生产区并插入数据库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接