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.
精彩评论