PX : code

MakeButton by Itzchak Rehberg
Download this code


<?php  Header"Content-type: image/gif");  // info for the browser

/* PHP3 Button generator, (c) 2000 by IzzySoft (izzysoft@buntspecht.de)
 * License: GPL (and it would be nice to drop me a note that you find it
 * useful - if you use it. And, of course, I am very interested in
 * enhancements you made to the script!
 *
 * Purpose: generate buttons with text passed by parameter.
 *
 * possible parameters to the script:
 *   button    - input gif image. Just the part of the filename before the dot.
 *               The specified image file is expected in the same directory
 *               as this script resides in.
 *   font      - font to use (1 - 5; 1 is very small, 3 medium, 5 normal size.
 *               The script will automatically use a smaller font if text is
 *               too long for selected size.) Default: 5
 *   text      - the text to be put on the button. Will be centered.
 *   textcolor - color for the letters. Default: white.
 *               in this example code only blue, white and black are defined;
 *               but you can add custom colors easily.
 *   width,heigth - width and heigth of the button. Useful only if target
 *               button should have different size than source image.
 *
 * Example for usage:
 *  <IMG SRC="button.php3?button=yellow&text=Example">
 *  will look for yellow.gif and put the string "Example" on it.
 *
 * I use to have three buttons I normally generate (one displays selected
 * item, one is for mouseover(), and one is the default button). The source
 * images are yellow.gif, white.gif and blue.gif - so my script assumes
 * blue.gif as default if "button=" not specified - you may wish to change
 * this below, it's easy ;)
 */

 // ===========================[ check for parameters and/or set defaults ]===

 
if (($font == "") || ($font 5) || ($font 1)) { $font 5; }
 if (
$text == "") { $text="Moin!"; }   // button text
 
if ($textcolor == "") {               // color for the letters
   
switch ($button) {
     case 
"yellow":
     case 
"white":
       
$textcolor "black";
       break;
     default:
       if (
$button == "") { $button "blue"; }
       
$textcolor "white";
       break;
   }
 } 
// textcolor end

 
$im_info getimagesize("$button.gif"); // button size
 
if ($width == "") {
   if (
$im_info == "") {
     
$buttonwidth 125;
   } else {
     
$buttonwidth "$im_info[0]";
   }
 } else {
  
$buttonwidth $width;
 }
 if (
$heigth == "") {
   if (
$im_info == "") {
     
$buttonheigth 30;
   } else {
     
$buttonheigth "$im_info[1]";
   }
 } else {
  
$buttonheigth $heigth;
 }
 
$vmidth ceil($buttonheigth 2);

 
// ========================================[ now lets define some colors ]===
 
 
$white "255,255,255";
 
$black "0,0,0";
 
$blue  "0x2c,0c6d,0xaf";

 
// ==================================================[ build color array ]===
 // now we put the needed color into an array (if e.g. "$textcolor=white",
 // the array $textcolor_array represents "white")
 
$textcolor_array explode(",", $$textcolor);

 
// =======================[ calculate position of the text on the button ]===

 
do {
   
$textwidth strlen($text) * imagefontwidth($font);
   
$x = ($buttonwidth $textwidth) / 2$x ceil($x);
   
$y $vmidth - (imagefontheight($font) / 2);
   
$font--;
 } while ((
$x 0) && ($font 0)); $font++;

 
// ===========================================[ now we create the button ]===

 
if (isset($width) || isset($heigth)) {            // size change expected?
   
$ima imagecreatefromgif("$button.gif");       // open input gif
   
$im  imagecreate($buttonwidth,$buttonheigth); // create img in desired size
   
$uglybg ImageColorAllocate($im,0xf4,0xb2,0xe5);
   
ImageRectangle($im,0,0,$buttonwidth,$buttonheigth,$uglybg);
   
$dummy imagecopyresized($im,$ima,0,0,0,0,$buttonwidth,$buttonheigth,$im_info[0],$im_info[1]);
   if (
$dummy == "") {
     
ImageDestroy($im);  // if it didn't work, create default below instead
   
} else {;}
   
ImageDestroy($ima);
   
ImageColorTransparent($im,$uglybg);
 } else {
   
$im imagecreatefromgif("$button.gif");        // open input gif
 
}
 if (
$im == "") {  $im imagecreate($buttonwidth,$buttonheigth); // if input gif not found,
  
$rblue ImageColorAllocate($im0x2c,0x6D,0xAF);// create a default box
  
ImageRectangle($im,0,0,200,100,$rblue);
 }
 
$color ImageColorAllocate($im$textcolor_array[0], $textcolor_array[1], $textcolor_array[2]); // allocate the color
 
imagestring($im$font$x$y"$text"$color); // put the text on it
 
ImageGif($im);                                    // send button to browser
 
ImageDestroy($im);                                // free the used memory
?>

Comments or questions?
PX is running PHP 5.2.17
Thanks to Miranda Productions for hosting and bandwidth.
Use of any code from PX is at your own risk.