udaya
udaya

Reputation: 9778

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 saved to the database.

Upvotes: 3

Views: 4160

Answers (3)

PHP
PHP

Reputation: 1709

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

Upvotes: 4

janosrusiczki
janosrusiczki

Reputation: 1931

On the client side I'd recommend JCrop.

Upvotes: 3

Justin Summerlin
Justin Summerlin

Reputation: 5086

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.

Upvotes: 1

Related Questions