note 36234 deleted from function.imagecopyresampled by aidan

From: Date: Mon, 04 Oct 2004 09:44:06 +0000
Subject: note 36234 deleted from function.imagecopyresampled by aidan
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-77952@lists.php.net to get a copy of this message
Note Submitter: code_couturier at graffiti dot net ---- # here is a simple way to calc # the new size of an image according # to a specific proportional value # of an original/source image and a # specific dec./inc. value. # $oX,$oY = original x and y image_size # $nX,$nY = new x and y image_size # here we go ... $n=(float)1.7; # must be >1.0 $org_proportion=(float)($oX/$oY); $nX=(int)($oX/$n); $nY=(int)($nX/$org_proportion); # now we can create, resize and copy $img_new = imagecreatetruecolor($nX,$nY); imagecopyresampled ($im_new, $im_org,0,0,0,0, $nX,$nY,$oX,$oY); # and here the same with a new proportional # value for the destination image. we use # (width/height) = proportion to calc the # new height and width, according to the # new size. the image must have a landscape # format otherwise we must swap the x an y # values inside this calculation (see if ...)! $n=(float)1.7; # must be >1.0 $new_proportion=(float)1.4; # must be >1.0 if ($oY<=$oX) { # if org_image is landscape_oriented $nY=(int)($oY/$n); $nX=(int)($nY*$new_proportion); } else { # if org_image is portrait_oriented $nX=(int)($oX/$n); $nY=(int)($nX*$new_proportion); } # now we can create,resize and copy $im_new = imagecreatetruecolor($nX,$nY); imagecopyresampled($im_new,$im_org, 0,0,0,0,$nX,$nY,$nX,$nY); # but - this will only create a clip from the # top and left (0,0) corner from the org_image. # why we do not take all (usefull) cut-out's # from the original image ?! # ok, ther are 13'tn possible/usefull areas, we # are able to calculate a crop-position (x,y,w,h) from: 1 top,left (0,0,$nX,$nY) 2 top,center ((int)(($oX-$nX)/2),0,$nX,$nY) 3 top,right ($oX-$nX,0,$nX,$nY) 4 bottom,left (0,$oY-$nY,$nX,$nY) 5 bottom,center ((int)(($oX-$nX)/2),$oY-$nY,$nX,$nY) 6 bottom,right ($oX-$nX,$oY-$nY,$nX,$nY) 7 center,right ($oX-$nX,(int)(($oY-$nY)/2),$nX,$nY) 8 center,left (0,(int)(($oY-$nY)/2),$nX,$nY) 9 top (0,0,$oX,$nY) 10 bottom (0,$oY-$nY,$oX,$nY) 11 right ($oX-$nX,0,$nX,$oY) 12 left (0,0,$nX,$oY) 13 center ((int)(($oX-$nX)/2),(int)(($oY-$nY)/2),$nX,$nY) # you can use these different (x,y,h,w) alignements here: imagecopyresampled($im_new,$im_org, 0,0,x,y,$nX,$nY,w,h);

« previous php.notes (#77952) next »