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 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 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 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
Archived
This topic is now archived and is closed to further replies.