Exemple #1
0
 /**
  * Create a GD image with text.
  *
  * @param   string    $text        The text to use. TTF fonts accept HTML character codes.
  * @param   integer   $size        Fontsize in pixels. For non-truetype fonts, size has a range of [1-5] points.
  * @param   integer   $padding     Padding in pixels arround the text
  * @param   string    $color       Color of the text
  * @param   string    $background  Background for the text. Default is transparent background.
  * @param   integer   $radius      Radius of rounded corners ont eh background if desired
  * @return  resource               GD resource with text.
  */
 public function text_image($text, $size = 24, $padding = 0, $color = "#ffffff", $background = 'transparent', $radius = 10)
 {
     if ($this->ttfont) {
         # Decode any htmls special chars, insert copyright date
         $text = html_entity_decode($text) . ' ' . chr(169) . date('Y');
         # Get our bounding box coordinates to find width and height.
         $bbox = imagettfbbox($size, 0, $this->ttfont, $text);
         $w = abs($bbox[4] - $bbox[0]) + $padding * 2;
         $h = abs($bbox[5] - $bbox[0]) + $padding * 2;
         # Center horizontally
         $x = $padding;
         # Center vertically
         $y = $h - $padding;
     } else {
         # Insert copyright date
         $text = $text . ' (c)' . date('Y');
         $size = Number::minmax($size, 1, 5);
         $w = imagefontwidth($size) * strlen($text) + 2 * $padding;
         $h = imagefontheight($size) + 2 * $padding;
         # Center horizontally, vertically
         $x = $y = $padding;
     }
     # Blank canvas
     $stamp = imagecreatetruecolor($w, $h);
     # Allocate Transparent background
     imagefill($stamp, 0, 0, imagecolorallocatealpha($stamp, 0, 0, 0, 127));
     # Add (rounded) rectangle to background if desired
     if ($background != 'transparent') {
         $this->imagefillroundedrect($stamp, 0, 0, $w, $h, $radius, $background, 1);
     }
     # Allocate Text Color
     $tcol = Color::hex2rgb($color);
     $tcol = imagecolorallocatealpha($stamp, $tcol[0], $tcol[1], $tcol[2], 0);
     # Allocate text using Truetype font if available
     if ($this->ttfont) {
         imageTTFText($stamp, $size, 0, $x, $y, $tcol, $this->ttfont, $text);
     } else {
         imagestring($stamp, $size, $x, $y, $text, $tcol);
     }
     return $stamp;
 }