07-Mar-2001 03:29
When using ImageGif( $im ) it sends the output directly to the browser. to
prevent this from happening and also to be able to save your new image to a
database for example use ob_start(), ob_get_contents(), and ob_end_clean()
ex:
<?php
function ResizeGif( $image, $newWidth,
$newHeight){
//Open the gif file to resize
$srcImage =
ImageCreateFromGif( $image );
//obtain the original image Height
and Width
$srcWidth = ImageSX( $srcImage );
$srcHeight =
ImageSY( $srcImage );
// the follwing portion of code
checks to see if
// the width > height or if width <
height
// if so it adjust accordingly to make sure the image
//
stays smaller then the $newWidth and $newHeight
if( $srcWidth
< $srcHeight ){
$destWidth = $newWidth *
$srcWidth/$srcHeight;
$destHeight =
$newHeight;
}else{
$destWidth =
$newWidth;
$destHeight = $newHeight *
$srcHeight/$srcWidth;
}
// creating the destination
image with the new Width and Height
$destImage = imagecreate(
$destWidth, $destHeight);
//copy the srcImage to the
destImage
ImageCopyResized( $destImage, $srcImage, 0, 0, 0, 0,
$destWidth, $destHeight, $srcWidth, $srcHeight );
//create the
gif
ImageGif( $destImage );
//fre the memory used for
the images
ImageDestroy( $srcImage );
ImageDestroy( $destImage
);
}
//save output to a
buffer
ob_start();
//Resize image ( will be stored in
the buffer )
ResizeGif( "/where/image/is/image.gif",
"150", "150");
//copy output buffer to
string
$resizedImage = ob_get_contents();
//clear output
buffer that was saved
ob_end_clean();
//write
$resizedImage to Database, file , echo to browser whatever you need to do
with it
Also do not put Header() between ob_start and ob_end_clean()
because they will still be sent. $resizedImage is the resized image had
there been no ob function calls ResizeGif() would have sent the output to
the browser.I hope this helps some people with databases that want to store
there image
Dave