Giddy Rob Posted January 22, 2008 Share Posted January 22, 2008 Hey Guys, I know how to do the above, but I was wondering if anyone knows how to, or has a function that, crops an image to a certain size without creating black borders or squashing it? i.e. if I have an image with a resolution of 1600x1200 and I want to make it 90x100 I want the image to be cropped so that it isn't squashed in any way. I want it to cut either the top or the sides off so it looks ok. I am using a function I found on the internet but it puts black borders on the images sometimes. Here is the function below. <CODE> function cropImage($nw, $nh, $source, $stype, $dest) { $size = getimagesize($source); $w = $size[0]; $h = $size[1]; switch($stype) { case 'gif': $simg = imagecreatefromgif($source); break; case 'jpg': $simg = imagecreatefromjpeg($source); break; case 'png': 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); } imagejpeg($dimg,$dest,186); }//end of crop image </CODE> Anyone got any ideas? Cheers in advance Rob Quote Link to comment https://forums.phpfreaks.com/topic/87210-cropping-and-resizing-image/ Share on other sites More sharing options...
sasa Posted January 22, 2008 Share Posted January 22, 2008 try to change if($w> $h) { to if($wm> $hm) { and so on Quote Link to comment https://forums.phpfreaks.com/topic/87210-cropping-and-resizing-image/#findComment-446102 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.