
| 7.5 Can I generate dynamic WBMP images on-the-fly? |
|
Of course. You will, like so very often, need some form of server side script language like PHP or ASP or Perl to do it. In addition, you'll most likely need some form of image converter because few server side script languages can generate WBMP images by themselves. How it's all done depends on the script language, but here's a PHP example which will generate the a WBMP image. The image above is created by GD which is compiled into PHP. Note that current versions of GD do no longer create GIF images, but so called PNG (Portable Network Graphics) images. Small parts of the code below needs to be changed from GIF to PNG if you're using the current version of PHP. In addition, and what does the conversion from either PNG or GIF to WBMP, is DuPont's Image Magick which converts between practically any thinkable format. It is available for most platforms. In the code, I've used the PHP function ImageCreateFromGif() because I wanted to put some text on the GIF image. You can generate a blank GIF/PNG image with PHP's ImageGreate() function instead. And now for the code:
<?
// hardcoded "variables" are safer!
$blank = "./wapclock_blank.gif"; // path to blank GIF file - not really needed (see above)
// Look at it at http://wap.colorline.no/wap-faq/apps/wapclock_blank.gif
$input = "/tmp/wapclock.gif"; // path to input file generated by PHP
$output = "/tmp/wapclock.out"; // path to temporary output file. Extension is irrelevant
$convert = "/usr/local/bin/convert"; // path to ImageMagick convert
if($format == "gif") {
header("Content-type: image/gif"); // if it's GIF, send that Content-type
$type = "GIF";
}
else {
if($format == "wbmp") { // if it's WBMP, send that Content-type
header("Content-type: image/vnd.wap.wbmp");
$type = "WBMP";
}
else {
header("Content-type: text/plain"); // hope that the browser can read this
$type = ""; // or someone forgot to set the format variable
}
}
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // turn off caching
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
$im = imagecreatefromgif($blank); // create a GIF file from an empty GIF file (see faq)
$time = date("H:m:s"); // put the current time into the time variable
imagestring($im,4,6,15,$time,0); // Place time variable sort of in the middle, with font size 4
ImageGif($im,$input); // generate a GIF file with PHP (see faq)
ImageDestroy($im); // empty the GD temporary buffer
if(strlen($type) > 0) { // if the type is known
exec($convert." ".$input." ".$type.":".$output); // do the conversion
}
else {
echo("Unknown format!\n"); // or do nothing
exit; // and stop
}
$fd = fopen($output,"r"); // open the converted file
$contents = fread($fd,filesize($output)); // read eveything into a variable
fclose($fd); // close the file
echo($contents); // pour out the contents
?>
All the code above does is output an either GIF of WBMP data data stream. To use the actual image in a WAP application, you'll have to do something like this:
<?
header("Content-type: text/vnd.wap.wml");
echo("<?xml version=\"1.0\"?>\n");
echo("<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n\n");
echo("<!-- Code written in Microsoft NOTEPAD.EXE. (c) Espen Lyngaas 2000 Color Line ASA -->\n");
?>
<wml>
<card id="wapclock" title="WAP Clock">
<do type="prev" label="Reload Image">
<go href="<?echo($PHP_SELF)?>"/>
</do>
<p>
<img src="http://allnetdevices.com/faq/apps/gfxclock.asp?format=wbmp" alt="You should see an image..."/>
</p>
</card>
</wml>
This WAP application is, like all the others, available in the "Demos" section here: http://www.thewirelessfaq.com/demos.asp. |
| Related information |
|
WAP Shareware's Software Directory |
| [ Main ] [ 07 - Making it look fancy ] |
| © 2001, 2002, 2003, 2004 This document is the collective property of the WMLProgramming and OUI-support mailing lists. |