text = $text : 0; isset($style) ? $this->style = $style : 0; isset($gzip) ? $this->gzip = $gzip : 0; $stylesheet = FONT_DIR."/styles.ini"; if(file_exists($stylesheet)){ $styles = parse_ini_file($stylesheet, true); if(isset($styles[$this->style])){ $this->fontsettings = $styles[$this->style]; if($this->style == "admin"){ $this->fontsettings['font-name'] = $this->text; } $hash = md5(basename($this->fontsettings['font-name']).$this->fontsettings['color'].$this->fontsettings['font-size'].$this->fontsettings['shadow'].$this->fontsettings['shadow-color'].$this->text); $this->file = CACHE_DIR."/$hash.png"; if(file_exists($this->file)){ if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $_SERVER['HTTP_IF_MODIFIED_SINCE'] == gmdate('D, d M Y H:i:s', filemtime($this->file)).' GMT'){ header("HTTP/1.0 304 Not Modified"); } else{ self::fetchImage(); } } else { self::text2Image(); } }else{ header("HTTP/1.0 404 Not Found"); echo "

Error 404 - Not Found

"; } } else { header("HTTP/1.0 404 Not Found"); echo "

Error 404 - Not Found

"; } } /** Description * Creates a png image from a text string using truetype fonts and writes the file to cache */ private function text2Image(){ $image = new Imagick(); $draw = new ImagickDraw(); $draw->setGravity(Imagick::GRAVITY_WEST); $draw->setFillColor(new ImagickPixel("#".$this->fontsettings['color'])); $draw->setFontSize($this->fontsettings['font-size']); $draw->setFont(FONT_DIR."/".$this->fontsettings['font-name'].".ttf"); if($this->fontsettings['shadow']){ $shadow = new ImagickDraw(); $shadow->setGravity(Imagick::GRAVITY_WEST); $shadow->setFillColor(new ImagickPixel("#".$this->fontsettings['shadow-color'])); $shadow->setFontSize($this->fontsettings['font-size']); $shadow->setFont(FONT_DIR."/".$this->fontsettings['font-name'].".ttf"); $fm = $image->queryFontMetrics($shadow, $this->text, false); $width = $fm["textWidth"]+2; $height = $fm["textHeight"]+2; } else { $fm = $image->queryFontMetrics($draw, $this->text, false); $width = $fm["textWidth"]; $height = $fm["textHeight"]; } $image->newImage($width, $height, "transparent", "png"); $this->fontsettings['shadow'] ? $image->annotateImage($shadow, 1, 1, 0, $this->text) : 0; $image->annotateImage($draw, 0, 0, 0, $this->text); $image->writeImage($this->file); if(file_exists($this->file)){ self::fetchImage(); } } /** Description * Fetches the image from cache and delivers it to the browser along with the required headers. * @return PNG image */ private function fetchImage(){ $image = !$this->gzip ? file_get_contents($this->file) : gzencode(file_get_contents($this->file)); $this->gzip ? header('Content-encoding: gzip') : 0; header('Content-type: image/png'); header('Content-length: '.strlen($image)); header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($this->file)).' GMT'); print($image); } } ?>