Giddy Rob Posted January 26, 2008 Share Posted January 26, 2008 Hi, I can't seem to find a good method of cropping down an image without sometimes adding black borders. The function I am using is: 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 The above function sometimes works but it depends on the image dimensions it tries to crop. Does anyone know a fix for this function or a new function that just gets it right every time? Cheers in advance Rob Quote Link to comment https://forums.phpfreaks.com/topic/87886-cropping-an-image-with-gd-i-dont-want-black-borders/ Share on other sites More sharing options...
sasa Posted January 26, 2008 Share Posted January 26, 2008 try 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($wm> $hm) { $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(($wm <$hm) || ($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 im Quote Link to comment https://forums.phpfreaks.com/topic/87886-cropping-an-image-with-gd-i-dont-want-black-borders/#findComment-449740 Share on other sites More sharing options...
Giddy Rob Posted January 28, 2008 Author Share Posted January 28, 2008 you are a bl*!dy super star. Thanks so much! Rob Quote Link to comment https://forums.phpfreaks.com/topic/87886-cropping-an-image-with-gd-i-dont-want-black-borders/#findComment-451080 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.