<? /* REQUIRED: * MagpieRSS, XML-based RSS parser - http://magpierss.sourceforge.net/ * $rss - The RSS feed URL * GD library for PHP - http://www.php.net/gd */ require_once('magpierss/rss_fetch.inc'); // Send headers so browser knows a PNG is being served header("Content-type: image/png"); header("Pragma: no-cache\nCache-control: no-cache\n"); class textPNG { var $font = 'couriernew.ttf'; // Default font. Directory relative to script directory. var $size = 8; // Font size. var $rot = 0; // Rotation in degrees. var $pad = 20; // Padding. var $transparent = 0; // Transparency; 1 = on. var $red = 26; // Text colour; RGB. var $grn = 8; var $blu = 158; var $bg_red = 178; // Background colour; RGB. var $bg_grn = 227; var $bg_blu = 234; function draw() { // REQUIRED: RSS feed URL $rss = fetch_rss("http://qdb.us/qdb.xml"); $rand_element = rand(0,count($rss->items)); $desc = html_entity_decode($rss->items[$rand_element]['description'],ENT_QUOTES); // Convert HTML entities to characters $search = array('@<br />@'); $desc = preg_replace($search, '', $desc); // Remove trailing <br /> $width = 0; $height = 0; $offset_x = 0; $offset_y = 0; $bounds = array(); $image = ""; // Determine font height $bounds = ImageTTFBBox($this->size, $this->rot, $this->font, "W"); if ($this->rot < 0) { $font_height = abs($bounds[7]-$bounds[1]); } else if ($this->rot > 0) { $font_height = abs($bounds[1]-$bounds[7]); } else { $font_height = abs($bounds[7]-$bounds[1]); } // Determine bounding box $bounds = ImageTTFBBox($this->size, $this->rot, $this->font, $desc); if ($this->rot < 0) { $width = abs($bounds[4]-$bounds[0]); $height = abs($bounds[3]-$bounds[7]); $offset_y = $font_height; $offset_x = 0; } else if ($this->rot > 0) { $width = abs($bounds[2]-$bounds[6]); $height = abs($bounds[1]-$bounds[5]); $offset_y = abs($bounds[7]-$bounds[5])+$font_height; $offset_x = abs($bounds[0]-$bounds[6]); } else { $width = abs($bounds[4]-$bounds[6]); $height = abs($bounds[7]-$bounds[1]); $offset_y = $font_height;; $offset_x = 0; } // Create the image $image = imagecreate($width+($this->pad*2)+1,$height+($this->pad*2)+1); $background = ImageColorAllocate($image, $this->bg_red, $this->bg_grn, $this->bg_blu); $foreground = ImageColorAllocate($image, $this->red, $this->grn, $this->blu); if ($this->transparent) ImageColorTransparent($image, $background); ImageInterlace($image, false); // Render the image ImageTTFText($image, $this->size, $this->rot, $offset_x+$this->pad, $offset_y+$this->pad, $foreground, $this->font, $desc); // Output the PNG object imagePNG($image); } } $text = new textPNG; $text->draw(); ?>