
August 28th, 2004, 01:00 PM
|
|
|
|
Need GD help - output is gibberish
I need to pull images, resize them, and stick them in place with other html. I'm experienced with php, but not GD...
I've found sample code that seems to do what I need. Almost. When the code is run by itself, it does what it should and outputs the resized image to the browser.
But it only works when the image is the only thing on the page. When I try to embed this code so that the output is in with other output, I get of gibberish data for the image instead of the image.
I suspect this has something to do with the header() bit of the code, but not sure. Please help!
-G
PHP Code:
/*
Created by: Matthew Harris
...other notes...
*/
function thumb($source, $scale, $quality = 80)
{
/* Check for the image's exisitance */
if (!file_exists($source)) {
echo 'File does not exist!';
}
else {
$size = getimagesize($source); // Get the image dimensions and mime type
$w = $size[0] / $scale; // Width divided
$h = $size[1] / $scale; // Height divided
$resize = imagecreatetruecolor($w, $h); // Create a blank image
/* Check quality option. If quality is greater than 100, return error */
if ($quality > 100) {
echo 'The maximum quality is 100. <br>Quality changes only affect JPEG images.';
}
else {
header('Content-Type: '.$size['mime']); // Set the mime type for the image
switch ($size['mime']) {
case 'image/jpeg':
$im = imagecreatefromjpeg($source);
imagecopyresampled($resize, $im, 0, 0, 0, 0, $w, $h, $size[0], $size[1]); // Resample the original JPEG
imagejpeg($resize, '', $quality); // Output the new JPEG
break;
case 'image/png':
$im = imagecreatefrompng($source);
imagecopyresampled($resize, $im, 0, 0, 0, 0, $w, $h, $size[0], $size[1]); // Resample the original PNG
imagepng($resize, '', $quality); // Output the new PNG
break;
}
imagedestroy($im);
}
}
}
$file = "school.jpg";
thumb($file, 10);
|