Hi, Friday, March 14, 2003, 3:49:03 AM, you wrote: TR> Hi,
TR> Friday, March 14, 2003, 2:07:28 AM, you wrote: AR>> In the following php script, the function takes the original file and crops AR>> to the destination file. AR>> I've ran the script using a .png file and a .jpg file. AR>> The .png works fine whereas the .jpeg file returns only part of the image AR>> along with a blue rectangle. AR>> For instance - where the original image is a 200 x 300 jpeg called: AR>> 1_data.jpeg AR>> and the destination iamge is 75x75 called: AR>> 2_data.jpeg AR>> and starting at the x,y coordinates of 0,0 - the script returns a 75x 75 AR>> file but only a sliver of the .jpg image is within the 75x75 blue square. AR>> Any help will be of assistance. AR>> Thank you. AR>> Tony Ritter AR>> ........................................................ AR>> The following is the php cropping script (with author credit): AR>> <? AR>> // AR>> // image crop fuction ..... [EMAIL PROTECTED] AR>> // info at http://obala.net/en AR>> // AR>> // Yes the proses could be executed with imagecopyresized build-in function AR>> // but with this function you get the idea of how an image color set is AR>> constructed AR>> // AR>> // $cropX = source starting X AR>> // $cropY = source starting Y AR>> // $cropW = crop weigth AR>> // $cropH = crop heigh AR>> // $source = source filename AR>> // $destination = destination filename AR>> // $type = image type AR>> function AR>> im_crop($cropX,$cropY,$cropH,$cropW,$source,$destination,$type='jpeg') { AR>> // switch known types and open source image AR>> switch ($type) { AR>> case 'wbmp': $sim = ImageCreateFromWBMP($source); break; AR>> case 'gif': $sim = ImageCreateFromGIF($source); break; AR>> case 'png': $sim = ImageCreateFromPNG($source); break; AR>> default: $sim = ImageCreateFromJPEG($source); break; AR>> } AR>> // create the destination image AR>> $dim = imagecreate($cropW, $cropH); AR>> // pass trought pixles of source image AR>> for ( $i=$cropY; $i<($cropY+$cropH); $i++ ) { AR>> for ( $j=$cropX; $j<($cropX+$cropW); $j++ ) { AR>> // get RGB color info about a pixel in the source image AR>> $color = imagecolorsforindex($sim, imagecolorat($sim, $j, $i)); AR>> // insert the color in the color index of the new image AR>> $index = ImageColorAllocate($dim, $color['red'], AR>> $color['green'], $color['blue']); AR>> // plots a pixel in the new image with that color AR>> imagesetpixel($dim, $j-$cropX, $i-$cropY, $index); AR>> } AR>> } AR>> // whe dont need the sorce image anymore AR>> imagedestroy($sim); AR>> // switch known types and save AR>> switch ($type) { AR>> case 'wbmp': ImageWBMP($dim, $destination); break; AR>> case 'gif': ImageGIF($dim, $destination); break; AR>> case 'png': ImagePNG($dim, $destination); break; AR>> default: ImageJPEG($dim, $destination); break; AR>> } AR>> // free the used space of the source image AR>> imagedestroy($dim); AR>> } AR>> // example AR>> im_crop(0,0,75,75,'1_data.jpeg','2_data.jpeg','jpeg'); ?>>> TR> With jpegs you need to use $im2 = imagecreatetruecolor($x,$y) TR> and just write the pixel back using imagesetpixel($im, $x, $y, $p); TR> like this: TR> $im =imagecreatefromjpeg($filename); TR> $dim = imagecreatetruecolor($cropW, $cropH); TR> for ( $i=$cropY; $i<($cropY+$cropH); $i++ ) { TR> for ( $j=$cropX; $j<($cropX+$cropW); $j++ ) { TR> $pixel = imagecolorat($im, $x, $y); TR> imagesetpixel($dim, $j-$cropX, $i-$cropY, $pixel); TR> } TR> } TR> As it is true colour no need to use indexes. TR> -- TR> regards, TR> Tom Guess that should be imagecolorat($sim, $j, $i); :) -- regards, Tom -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php