imagecopyresampled in PHP, can someone explain it?

arelfreectat

New Member
OK i thought i understood this function but i have a complete mental block on this one.I wanted to create cropped thumbnails of size 75x75 from photos that are 800x536.the imagecopyresampled function has 10 possible parameters. i first tried this:\[code\]// Starting point of crop $tlx = floor(($width / 2) - ($new_width / 2)); //finds halfway point of big image and subtracts half of thumb. $tly = floor(($height / 2) - ($new_height / 2)); //gets centre of image to be cropped.imagecopyresampled($tmp_img,$img,0,0,$tlx,$tly,$new_width,$new_height,$orig_width,$orig_height);\[/code\]this finds either side of the halfway mark on the large image and crops it out. or so i thought. but it actuall crops a bit of the picture and leaves the right hand side and bottom in black (presumably from the imagecreatetruecolor earlier.so i found a way to do what i want but i want you to explain how it is working.i now have:\[code\]//Create thumbnails. $new_width = 75; //pixels. $new_height = 75; if($width > $height) $biggest_side = $width; else $biggest_side = $height; //The crop size will be half that of the largest side $crop_percent = .5; $crop_width = $biggest_side*$crop_percent; $crop_height = $biggest_side*$crop_percent; $c1 = array("x"=>($width-$crop_width)/2, "y"=>($height-$crop_height)/2); //Create new image with new dimensions to hold thumb $tmp_img = imagecreatetruecolor($new_width,$new_height); //Copy and resample original image into new image. imagecopyresampled($tmp_img,$img,0,0,$c1['x'],$c1['y'],$new_width,$new_height,$crop_width,$crop_height);\[/code\]it's doing it perfectly, shrinking the image and then cropping out the middle, but my maths isn't very sharp and also i think it's definitely that i don't fully understand the imagecopyresampled function.can someone walk me through it? parameter by parameter. especially the last two. originally i entered the width and height of the original image, but this enters 400 and 400 (half of the longest side). sorry for the rant. hope my mind understands this soon :)Alex
 
Back
Top