Reputation: 9778
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
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
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