开发者

How to crop an image while uploading?

I am doing an social networking project ,where i have an option to add/edit photos ,When user clicks the button the image will be uploaded to the database and it will be updated...is it possible to crop the image before it is sav开发者_开发技巧ed to the database.


simply call this function ..with param source ,destination and size what u want :)

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);
        }       


On the client side I'd recommend JCrop.


Sure, move the file out of the uploads directory and into a temp directory somewhere, store that location in their session, then display it back to them and let them crop it before you move it to your production area and insert it into the database.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜