justcrapx Posted December 20, 2006 Share Posted December 20, 2006 How can i crop an image using gd? I want to cut off exceeding width or height and to make the image square. A simple example for only jpg would make it. Link to comment https://forums.phpfreaks.com/topic/31372-cropping-a-square-from-an-image/ Share on other sites More sharing options...
justcrapx Posted December 20, 2006 Author Share Posted December 20, 2006 no relpies? =( Link to comment https://forums.phpfreaks.com/topic/31372-cropping-a-square-from-an-image/#findComment-145278 Share on other sites More sharing options...
cheezylu Posted April 1, 2007 Share Posted April 1, 2007 I would like to know how to do this too... Link to comment https://forums.phpfreaks.com/topic/31372-cropping-a-square-from-an-image/#findComment-219180 Share on other sites More sharing options...
cheezylu Posted April 1, 2007 Share Posted April 1, 2007 Woo... I believe I have it figured out!Here is a modified code from lixlpixel of PHP Paradise. This will create a cropped thumbnail of a JPEG and upload them both into a specified directory.[code]<?phpif(isset($_POST['Submit'])){ $size = 100; // the thumbnail height $filedir = 'pics/'; // the directory for the original image $thumbdir = 'pics/'; // the directory for the thumbnail image $prefix = 'THUM_'; // the prefix to be added to the original name $maxfile = '2000000'; $mode = '0666'; $userfile_name = $_FILES['image']['name']; $userfile_tmp = $_FILES['image']['tmp_name']; $userfile_size = $_FILES['image']['size']; $userfile_type = $_FILES['image']['type']; if (isset($_FILES['image']['name'])) { $prod_img = $filedir.$userfile_name; $prod_img_thumb = $thumbdir.$prefix.$userfile_name; move_uploaded_file($userfile_tmp, $prod_img); chmod ($prod_img, octdec($mode)); $sizes = getimagesize($prod_img); $aspect_ratio_wide = $sizes[1]/$sizes[0]; $aspect_ratio_tall = $sizes[0]/$sizes[1]; if ($sizes[1] > $sizes[0]) // if height is greater than width{ if ($sizes[0] <= $size) // if width <= defined size { $new_width = $sizes[0]; $new_height = $sizes[1]; }else{ $new_width = $size; $new_height = abs($new_width/$aspect_ratio_tall); } $size_difference_height = $sizes[1] / $new_height; $center_width = 0; $center_height = (($new_height - $size) / 2) * $size_difference_height; } else if ($sizes[0] > $sizes[1]) { // else if width is greater than height if ($sizes[1] <= $size) { $new_width = $sizes[0]; $new_height = $sizes[1]; }else{ $new_height = $size; $new_width = abs($new_height/$aspect_ratio_wide); } $size_difference_width = $sizes[0] / $new_width; $center_width = (($new_width - $size) / 2) * $size_difference_width; $center_height = 0;} $destimg = imagecreatetruecolor($size,$size) or die('Problem In Creating image'); $srcimg = imagecreatefromjpeg($prod_img) or die('Problem In opening Source Image'); imagecopyresampled($destimg,$srcimg,0,0,$center_width,$center_height,$new_width,$new_height,ImageSX($srcimg),ImageSY($srcimg)) or die('Problem In resizing'); ImageJPEG($destimg,$prod_img_thumb,90) or die('Problem In saving'); imagedestroy($destimg); } echo ' <a href="'.$prod_img.'"> <img src="'.$prod_img_thumb.'" width="$size" height="$size"> </a> '; }else{ echo ' <form method="POST" action="'.$_SERVER['PHP_SELF'].'" enctype="multipart/form-data"> <input type="file" name="image"><p> <input type="Submit" name="Submit" value="Submit"> </form>';}?>[/code] Link to comment https://forums.phpfreaks.com/topic/31372-cropping-a-square-from-an-image/#findComment-219323 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.