Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

image_create(), header.....

0 views
Skip to first unread message

Gerard Samuel

unread,
May 24, 2002, 2:37:19 PM5/24/02
to PHP
Im trying to use dynamic buttons, and Im trying to figure out how to get
around the header call.
I figure use output buffering, but so far Ive only come up with errors.
Anyone see a better way or any errors in my code.
Thanks

nb: Uncomment the echo() statement to get the error.
--------------------------------------------------
<?php

//echo 'Hey<br>';

function button($word) {
ob_start();
header("Content-Type: image/png");
$im = ImageCreate(100, 50);

$black = ImageColorAllocate($im, 0, 0, 0);
$white = ImageColorAllocate($im, 255, 255, 255);

$start_x = 50 - (strlen($word) * ImageFontWidth(5) / 2);
$start_y = 25 - ImageFontHeight(5) / 2;

ImageString($im, 5, $start_x, $start_y, $word, $white);

ImagePNG($im);
ImageDestroy($im);
ob_end_flush();
}

button('Hello World');

?>

Miguel Cruz

unread,
May 24, 2002, 4:22:28 PM5/24/02
to Gerard Samuel, PHP
You need to put the ob_start() call at the very beginning of your script,
not inside that function. You have to turn output buffering on before ANY
output is generated, if you want to be able to send headers later on.

miguel

Natalie Leotta

unread,
May 24, 2002, 2:42:20 PM5/24/02
to Gerard Samuel, PHP
You can save them and then call them up, but then you have to use a cron or
something to empty out the folder. Here's how I save it:

//Image created and everything up here, this is the very end of it
$myTime = time();
ImagePNG($im, "../spool/jp$myTime.png"); //this creates a unique name
chmod("../spool/jp$myTime.png", 0666); //leading 0, then the code for the
mode you want
ImageDestroy($im);

print "<img src='../spool/jp$myTime.png' border=0 width=\"520\"
GALLERYIMG=\"NO\" height=\"500\"></td>";

I hope this helps!

-Natalie

//echo 'Hey<br>';

ImagePNG($im);
ImageDestroy($im);
ob_end_flush();
}

button('Hello World');

?>


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Jerome Houston

unread,
May 24, 2002, 4:49:20 PM5/24/02
to gs...@trini0.org, php-g...@lists.php.net
While Natalie's solution is a valid one, i have another....

first - the error you're getting is because the headers are sent AS SOON as
you echo, print or output html outside of your <?php ?> tags. you're echoing
something before you call ob_start();

second- the reason this doesn't work, is because you're trying to write
binary image bytes into an text html page.... I think what you want is
something like this (actually 2 scripts):

script1.php :
<?php
echo 'Hey<br>';
echo '<img src="script2.php?theword=Hello+World">';
?>

script2.php :
<?php


function button($word) {
ob_start();
header("Content-Type: image/png");
$im = ImageCreate(100, 50);

$black = ImageColorAllocate($im, 0, 0, 0);
$white = ImageColorAllocate($im, 255, 255, 255);

$start_x = 50 - (strlen($word) * ImageFontWidth(5) / 2);
$start_y = 25 - ImageFontHeight(5) / 2;

ImageString($im, 5, $start_x, $start_y, $word, $white);

ImagePNG($im);
ImageDestroy($im);
ob_end_flush();
}
button($_GET["theword"]);
?>


----Original Message Follows----
From: "Leotta, Natalie (NCI/IMS)" <Leo...@ims.nci.nih.gov>

I hope this helps!

-Natalie

//echo 'Hey<br>';

ImagePNG($im);
ImageDestroy($im);
ob_end_flush();
}

button('Hello World');

?>

_________________________________________________________________
Send and receive Hotmail on your mobile device: http://mobile.msn.com

0 new messages