imagestring

(PHP 4, PHP 5)

imagestringРисование строки текста горизонтально

Описание

bool imagestring ( resource $image , int $font , int $x , int $y , string $string , int $color )

Рисует текст string на заданных координатах.

Список параметров

image

Ресурс изображения, полученный одной из функций создания изображений, например, такой как imagecreatetruecolor().

font

Может принимать значения 1, 2, 3, 4, 5 для встроенных шрифтов в кодировке latin2 (более высокое число соответствует большему шрифту) или любому из ваших собственных идентификаторов шрифтов, зарегистрированных с помощью imageloadfont().

x

x-координата верхнего левого угла.

y

y-координата верхнего левого угла.

string

Строка текста.

color

Идентификатор цвета, создаваемый функцией imagecolorallocate().

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Пример использования imagestring()

<?php
// Создание изображения 100*30 
$im imagecreate(10030);

// Белый фон, синий текст
$bg imagecolorallocate($im255255255);
$textcolor imagecolorallocate($im00255);

// Надпись в левом верхнем углу
imagestring($im500'Hello world!'$textcolor);

// Вывод изображения
header('Content-type: image/png');

imagepng($im);
imagedestroy($im);
?>

Результатом выполнения данного примера будет что-то подобное:

Вывод примера: imagestring()

Смотрите также

  • imageloadfont() - Загрузка шрифта
  • imagettftext() - Рисование текста на изображении шрифтом TrueType

Коментарии

If you find that you are getting two characters on the end of your imageString that look like a Y and an upside down L then they're probably representations of CR/LF.  Try trim()ing the string before outputting it.  (I was sooo sure this was a bug <g>)
2002-04-02 18:59:44
http://php5.kiev.ua/manual/ru/function.imagestring.html
Width ImageString, the strings you draw are not automatically wrapped width the edge of the image. You may use this function to automatically wrap them:

function ImageStringWrap($image, $font, $x, $y, $text, $color, $maxwidth)
{
    $fontwidth = ImageFontWidth($font);
    $fontheight = ImageFontHeight($font);

    if ($maxwidth != NULL) {
        $maxcharsperline = floor($maxwidth / $fontwidth);
        $text = wordwrap($text, $maxcharsperline, "\n", 1);
      }

    $lines = explode("\n", $text);
    while (list($numl, $line) = each($lines)) {
        ImageString($image, $font, $x, $y, $line, $color);
        $y += $fontheight;
      }
}

So, in particular, if you want to wrap a text with the edge of the Image, you may do:
ImageStringWrap($img, $font, 0, $y, $text, $color, ImageSX($img) );
2002-06-10 22:25:28
http://php5.kiev.ua/manual/ru/function.imagestring.html
When setting the font, any integer less than 1 defaults to 1, and any integer greater than 5 defaults to 5.
2002-11-08 13:25:06
http://php5.kiev.ua/manual/ru/function.imagestring.html
A simple example:
To make one line of text fit in the image.

<?php
header 
("Content-type: image/png");
$string "spam@mvoncken.nl";                                             
$font   4;
$width  ImageFontWidth($font) * strlen($string);
$height ImageFontHeight($font);

$im = @imagecreate ($width,$height);
$background_color imagecolorallocate ($im255255255); //white background
$text_color imagecolorallocate ($im00,0);//black text
imagestring ($im$font00$string$text_color);
imagepng ($im);
?>

I use something like this for spamprotection of my visitors (pass userid as an url-parameter for this php)
2003-02-14 16:18:42
http://php5.kiev.ua/manual/ru/function.imagestring.html
Drawing a string as an image is a handy way to disguise an eMail address so spam sniffers can't get it as easily. The only catch to creating a dynamic image with your eMail in it is the eMail to be displayed must be passed via the query string to enable static HTML to use it. So, the eMail must be encrypted slightly in order to not defeat the purpose of not typing your eMail address outright. I wrote the following script to do so:

Save the following as email.php
<?php
   
if ($_GET['addr'] != "") {
       
$msg $_GET['addr'];
       
$msg preg_replace("/\[dot]/",".",$msg);
       
$msg preg_replace("/\[at]/","@",$msg);
       
$final "";
        for (
$i=0$i<=strlen($msg); $i++) {
           
$final .= substr($msgstrlen($msg)-$i1);
        }
       
$msg $final;

       
$char_width 8;
       
$char_height 17;
       
$padding 3;
       
$width $padding*2+strlen($msg)*$char_width;
       
$height = +$padding*2+$char_height;
       
$im imagecreatetruecolor($width,$height);
       
imagealphablending($imFALSE);
       
imagesavealpha($imTRUE);
       
$bg imagecolorallocatealpha($im2552550100);
       
$text imagecolorallocatealpha($im0000);
       
imagefilledrectangle ($im00$width$height$bg); # Make transparent
       
imagestring($im4$padding$padding$msg$text);
    } else {
       
$im imagecreatetruecolor(1,1);
       
imagealphablending($imFALSE);
       
imagesavealpha($imTRUE);
       
$bg imagecolorallocatealpha($im25500125);
       
imagefilledrectangle ($im0011$bg); # Make transparent
   
}
   
header('Content-type: image/jpg');
   
imagepng($im);
   
imagedestroy($im);

?>

If the script is called without an eMail address, it outputs a 2x2 transparent image.

To call the script to generate the eMail "user@home.com", the HTML tag would be:

<img src="email.php?addr=moc[dot]emoh[at]resu">

To 'encrypt' the eMail address to pass to the script, write the address backwards and replace "." with "[dot]" and "@" with "[at]". It's not the most ironclad protection, but it thwarts most casual eMail sniffers.
2004-10-13 15:35:07
http://php5.kiev.ua/manual/ru/function.imagestring.html
//simple hello world

<?
header 
("Content-type: image/png");

$img_handle ImageCreate (20020) or die ("Cannot Create image");
$back_color ImageColorAllocate ($img_handle01010);
$txt_color ImageColorAllocate ($img_handle23523551);
ImageString ($img_handle10255"Hello world!"$txt_color);
ImagePng ($img_handle); 
?>
2004-11-17 12:27:03
http://php5.kiev.ua/manual/ru/function.imagestring.html
If you are looking to center the text, use the following function; I'm not promising perfection...

function imagecenteredstring ( &$img, $font, $xMin, $xMax, $y, $str, $col ) {
    $textWidth = imagefontwidth( $font ) * strlen( $str );
    $xLoc = ( $xMax - $xMin - $textWidth ) / 2 + $xMin + $font;
    imagestring( $img, $font, $xLoc, $y, $str, $col );
}
2005-02-28 22:08:52
http://php5.kiev.ua/manual/ru/function.imagestring.html
My version of the centered string, it decreases the font number (since I've noticed smaller numbers are smaller fonts) until 1 if the string won't fit. Then it will give up.

<?php
function imagestringcentered ($img,$font,$cy,$text,$color) {
 while (
strlen($text) * imagefontwidth($font) > imagesx($img)) {
  if (
$font 1) { $font--; }
  else { break; }
 } 
 
imagestring($img,$font,imagesx($img) / strlen($text) * imagefontwidth($font) / 2,$cy,$text,$color);
}
?>
2005-03-26 13:49:10
http://php5.kiev.ua/manual/ru/function.imagestring.html
Based on the previous example, here's how to center a string both horizontally and vertically...

<?php
function imagestringcentered ($img,$font,$text,$color) {
 while (
strlen($text) * imagefontwidth($font) > imagesx($img)) {
  if (
$font 1) { $font--; }
  else { break; }
 } 
 
$cy = (imagesy($img)/2) - (imagefontwidth($font)/2);
 
imagestring($img,$font,imagesx($img) / strlen($text) * imagefontwidth($font) / 2,$cy,$text,$color);
}
?>
2005-05-12 13:52:58
http://php5.kiev.ua/manual/ru/function.imagestring.html
This code produces a png image of the text within the query. It autofits to the length of the string. 
Usage: http://yoursite.com/text.php?abcdefg+hijk

Use + to produce a space in the image. The + can be excaped with a carat (^). Most other symbols work fine in the query string, like the ?.

<?php
header 
("Content-type: image/png");
$string $_ENV["QUERY_STRING"];
$md5 md5($string); //just so we don't convert valid text into a +
$string str_replace("^+"$md5$string); //replaces ^+ with long, unnatural string
$string str_replace("+"" "$string); //replaces + with space
$string str_replace($md5"+"$string); //replaces the long, unnatural string with +
$width  imagefontwidth($font) * strlen($string);
$height imagefontheight($font);
$image = @imagecreate($width+2$height+2);
$black imagecolorallocate($image000); //background
$white imagecolorallocate($image255255255);
imagestring($image211$string$white);
imagepng($image);
imagedestroy($image);
?>
2005-05-23 19:04:12
http://php5.kiev.ua/manual/ru/function.imagestring.html
i modified the centering functions and created this which centers each word on it's own line. You can adjust the spacing with the $valign var. currently no implimentation if text is too large for image. strings are tokenized by space, but can obviously be changed. 

function ImageStringWrap($image, $font, $text, $color)
{
  $fontwidth = ImageFontWidth($font);
  $fontheight = ImageFontHeight($font);
  $words= str_word_count($text);
  if ($words > 1){
    $string=array(strtok($text,' '));
    for ($i = 1 ; $i <= $words ; $i++){
      $string=array_merge($string,array($i=>strtok(' ')));
    }
  }
  else
    $string=$text;
  $vspace=4;
  $y=((imagesy($image)-($fontheight*$words)-($words*$vspace))/2);
  foreach($string as $st){
    $x=((imagesx($image)-($fontwidth * strlen($st)))/2);
    ImageString($image,$font,$x,$y,$st,$color);
    $y+=($fontheight+$vspace);
  }
}
hope this is helpful
2005-05-27 22:48:15
http://php5.kiev.ua/manual/ru/function.imagestring.html
There is an error in "tjpoe at cableaz dot com" 's function ImageStringWrap. Instead of 

    else
           $string = $text;

there should be

     else
           $string = array($text);

for function to work for strings with only one word. Otherwise it works like a charm, thanks.
2005-06-11 04:12:39
http://php5.kiev.ua/manual/ru/function.imagestring.html
There is a small error in the function for horizontal and vertical centering by "jurgen dot vanoosterwijck at pandora dot be"

the line 

 $cy = (imagesy($img)/2) - (imagefontwidth($font)/2);

should be

 $cy = (imagesy($img)/2) - (imagefontheight($font)/2);
2005-12-05 12:55:30
http://php5.kiev.ua/manual/ru/function.imagestring.html
If you are looking for a way to generate a "CAPTCHA" image for a form verification (to verify it is not a robot), have a look at this : http://blog.theoconcept.com/static/distortion/

It gives an animated image with the parameter string, with distortion, here is an example :
http://blog.theoconcept.com/static/distortion/distortion.php

(*)  You'll need GD + Freetype support
(**) You'll need ImageMagick on the machine
2006-02-01 17:21:44
http://php5.kiev.ua/manual/ru/function.imagestring.html
hello, I noticed that if you put a rand(3,5) it will put random sizes of font to each character put on the image. this is very useful when programming captchas for anti-spam form verification.
2006-02-28 13:54:34
http://php5.kiev.ua/manual/ru/function.imagestring.html
Here's a simple function for creating an aligned string which is cutted to match the space between $x1 and $x2
<?php
function imagestringcutted($img,$font,$y,$x1,$x2,$text,$color,$align="center") {
   
$fontwidth imagefontwidth($font);
   
$fullwidth strlen($text) * $fontwidth;
   
$maxwidth $x2-$x1;
   
$targetwidth $fullwidth-(4*$fontwidth);
    if(
$fullwidth $maxwidth) {
        for(
$i 0$i strlen($text) AND ((strlen($text)-($i-4))*$fontwidth) > $targetwidth ;$i++) { }
       
$text substr($text,0,(strlen($text)-$i)-4)."...";
    }
    if(
$align == "left"imagestring($img,$font,$x1,$y,$text,$color);
    elseif(
$align == "right"imagestring($img,$font,$x2 - ((strlen($text) * $fontwidth)),$y,$text,$color);
    else 
imagestring($img,$font,($x2-$x1)/ strlen($text) * $fontwidth 2,$y,$text,$color);
}
?>
Usage:
<?php
imagestringcutted
($img,$font,$y,$x1,$x2,$text,$color,$align);
?>
Will create a string $text, which is cutted if it's too long to match between  $x1 and $2, on $img with font $font and color $color at height $y and with align to $align.
Hope it will help some people.
Sorry for my bad English.
2006-10-18 17:47:37
http://php5.kiev.ua/manual/ru/function.imagestring.html
The built-in fonts used to be in latin-2 (iso8859-2) encoding. For some time, they are in latin-1 (iso8859-1) encoding. There is no way to change the encoding at all. If you need to use any other encoding, you have to use TrueType fonts.
2006-11-09 05:18:55
http://php5.kiev.ua/manual/ru/function.imagestring.html
I've made a little modification of the (quite usefull) imagestringcutted function (when align=center, it doesn't work well for me if x1!=0) so juste replace the last line with :

<?php
   
[...]
   else 
imagestring($img,$font,$x1+($x2-$x1)/ strlen($text) * $fontwidth 2,$y,$text,$color);
}
?>
2006-12-14 04:21:50
http://php5.kiev.ua/manual/ru/function.imagestring.html
I like this better than "tjpoe at cableaz dot com"'s function for wrapping text to fit width (auto-adjusts height as needed) since it doesn't only do 1 word per line.

function make_wrapped_txt($txt, $color=000000, $space=4, $font=4, $w=300) {
  if (strlen($color) != 6) $color = 000000;
  $int = hexdec($color);
  $h = imagefontheight($font);
  $fw = imagefontwidth($font);
  $txt = explode("\n", wordwrap($txt, ($w / $fw), "\n"));
  $lines = count($txt);
  $im = imagecreate($w, (($h * $lines) + ($lines * $space)));
  $bg = imagecolorallocate($im, 255, 255, 255);
  $color = imagecolorallocate($im, 0xFF & ($int >> 0x10), 0xFF & ($int >> 0x8), 0xFF & $int);
  $y = 0;
  foreach ($txt as $text) {
    $x = (($w - ($fw * strlen($text))) / 2);
    imagestring($im, $font, $x, $y, $text, $color);
    $y += ($h + $space);
  }
  header('Content-type: image/jpeg');
  die(imagejpeg($im));
}
2006-12-27 20:53:42
http://php5.kiev.ua/manual/ru/function.imagestring.html
Автор:
//  Example of use...

//  This is a simple function to output text to an image
//  which is centered (as much as I want to do by eye)
//  and wrapped
//    Just remember that all the sizes are guessed
// doesn't cut on the space (only on number of characters)
//  or change color of text, but this isn't for that...
function imageCenterString( $imgw, $imgh,
   $image_text = '', $text_size=5 )
{
   $im = imagecreate( $imgw, $imgh );
   
   // white background and blue text
   $bg = imagecolorallocate($im, 255, 255, 255);
   $textcolor = imagecolorallocate($im, 0, 0, 0);
   
   $t_h = $t_w = $t_x = $t_y = 0;
   $base_w =9; $base_h = 16;
   $m = 0.88;
   switch ( $text_size )
   {
      case 1: $t_w = $base_w*pow(($m*.98),4);
         $t_h = $base_h*pow(($m*.98),4);
         break;
      case 2: $t_w = $base_w*pow($m,3);
         $t_h = $base_h*pow($m,3);
         break;
      case 3: $t_w = $base_w*pow($m,2);
         $t_h = $base_h*pow($m,2);
         break;
      case 4: $t_w = $base_w*$m;
         $t_h = $base_h*$m;
         break;
      case 5: $t_w = $base_w;
         $t_h = $base_h;
         break;
      default:
         if ( $text_size >= 5 ) // set to 5
         {   $t_w = $base_w; $t_h = $base_h; }
         if ( $text_size < 5 ) // set to 1
         {
            $t_w = $base_w*pow(($m*.98),4);
            $t_h = $base_h*pow(($m*.98),4);
         }
         break;
   }
   
   $text_array = array();
   
   $max = floor($imgw/$t_w);
   
   for( $i=0; strlen($image_text) > 0; $i += $max)
   {
      array_push($text_array, substr($image_text,0,$max));
      if ( strlen($image_text) >= $max )
      {   $image_text = substr($image_text,$max); }
      else
      {   $image_text = ''; }
   }
   
   $t_y = ($imgh/2) - ($t_h*count($text_array)/2);

   foreach ( $text_array as $text )
   {
      $t_x = ($imgw/2)-($t_w*strlen($text)/2);
      imagestring($im, $text_size, $t_x, $t_y,
         $text, $textcolor);
      $t_y += $t_h;
   }

   // output the image
   header("Content-type: image/gpeg");
   imagejpeg($im);
}
2007-02-18 20:00:18
http://php5.kiev.ua/manual/ru/function.imagestring.html
Автор:
Its just an easy function to write an string in the middle of a picture.

<?php

function imageCenterString(&$img$font$text$color)
{
    if(
$font || $font 5){ $font 0; }
   
$num = array(array(4.66),
                 array(
4.66),
                 array(
5.612),
                 array(
6.512),
                 array(
7.616),
                 array(
8.516));
   
$width ceil(strlen($text) * $num[$font][0]);
   
$x     imagesx($img) - $width 8;
   
$y     Imagesy($img) - ($num[$font][1] + 2);
   
imagestring($img$font$x/2$y/2$text$color);
}

?>
2008-01-03 07:06:11
http://php5.kiev.ua/manual/ru/function.imagestring.html
Simple script to convert a string (such as an email addresses) to a transparent image.

Usage: 
<img src="stringtoimg.php?string=<?= urlencode(base64_encode($email)) ?>">

From a spambot's point of view, they see:
<img src="stringtoimg.php?string=ZpbXZG92ZXJsb3JkQGdtYWlsLmNvbQ%3D%3D">

Optional parameters:
    font_size: 1 to 5, with the default at 3
    R/G/B: the font color, in hex.

Usage:
<img src="stringtoimg.php?string=<?= urlencode(base64_encode($email)) ?>&font_size=4&R=FF&G=FF&B=00">

<?php
/*
Filename: stringtoimg.php

Parameters:
        string: the string to print
        font_size (optional): the size of the font from 1-5
        R/G/B (optional): the RGB colors of the font in hex       
*/

header ("Content-type: image/png");

//Get string info
$font_size = isset($_GET['font_size']) ? $_GET['font_size'] : 3;
$string urldecode(base64_decode($_GET['string']));

//Get the size of the string
$width imagefontwidth($font_size) * strlen($string);
$height imagefontheight($font_size);

//Create the image
$img = @imagecreatetruecolor($width$height)
      or die(
"Cannot Initialize new GD image stream");

//Make it transparent
imagesavealpha($imgtrue);
$trans_colour imagecolorallocatealpha($img000127);
imagefill($img00$trans_colour);

//Get the text color
$text_color = isset($_GET['R'], $_GET['G'], $_GET['B']) ?
       
imagecolorallocate($imghexdec($_GET['R']), hexdec($_GET['G']), hexdec($_GET['B'])) :
       
imagecolorallocate($img000);

//Draw the string
imagestring($img$font_size00$string$text_color);

//Output the image
imagepng($img);
imagedestroy($img);
?>
2008-01-03 17:28:40
http://php5.kiev.ua/manual/ru/function.imagestring.html
Автор:
Creates a box of text. Has horizontal and vertical alignment, box arguments, and custom leading. I submitted this to the manual in 2003 actually, but it disappeared after a year or so (not sure why). Here it is again.

<?php
define
("ALIGN_LEFT""left");
define("ALIGN_CENTER""center");
define("ALIGN_RIGHT""right");
define("VALIGN_TOP""top");
define("VALIGN_MIDDLE""middle");
define("VALIGN_BOTTOM""bottom");

function 
imagestringbox(&$image$font$left$top$right$bottom$align$valign$leading$text$color)
{
   
// Get size of box
   
$height $bottom $top;
   
$width $right $left;
 
   
// Break the text into lines, and into an array
   
$lines wordwrap($textfloor($width imagefontwidth($font)), "\n"true);
   
$lines explode("\n"$lines);
 
   
// Other important numbers
   
$line_height imagefontheight($font) + $leading;
   
$line_count floor($height $line_height);
   
$line_count = ($line_count count($lines)) ? (count($lines)) : ($line_count);
 
   
// Loop through lines
   
for ($i 0$i $line_count$i++)
   {
       
// Vertical Align
       
switch($valign)
       {
           case 
VALIGN_TOP// Top
               
$y $top + ($i $line_height);
               break;
           case 
VALIGN_MIDDLE// Middle
               
$y $top + (($height - ($line_count $line_height)) / 2) + ($i $line_height);
               break;
           case 
VALIGN_BOTTOM// Bottom
               
$y = ($top $height) - ($line_count $line_height) + ($i $line_height);
               break;
           default:
               return 
false;
       }
     
       
// Horizontal Align
       
$line_width strlen($lines[$i]) * imagefontwidth($font);
       switch(
$align)
       {
           case 
ALIGN_LEFT// Left
               
$x $left;
               break;
           case 
ALIGN_CENTER// Center
               
$x $left + (($width $line_width) / 2);
               break;
           case 
ALIGN_RIGHT// Right
               
$x $left + ($width $line_width);
               break;
           default:
               return 
false;
       }
     
       
// Draw
       
imagestring($image$font$x$y$lines[$i], $color);
   }
 
   return 
true;
}
?>
2008-03-14 16:10:47
http://php5.kiev.ua/manual/ru/function.imagestring.html
If you have any problem with CentralEurope's words, for example : ľščťžýáíéúäňôď, I am try this problem by iconv() function.

<?php
// create example image
$im imagecreate(20020);
$bg imagecolorallocate($im255255255);
$textcolor imagecolorallocate($im00255);
$text "ľščťžýáíéúäňôď...";

//simple convert string
$string iconv("Windows-1250""Latin2"$text);

// write converted string at the top left
imagestring($im400$string$textcolor);

// output the image
header("Content-type: image/png");
imagepng($im);
?>
2008-08-14 05:42:53
http://php5.kiev.ua/manual/ru/function.imagestring.html
this is a function that is based on imagestring but it produces text in the center of an image i hope it helps :D

<?php
function ImageStringCenter($image_resource$font_size$line_number$total_lines$text$color ) {

   
$center_x ceil( ( imagesx($image_resource) - ( ImageFontWidth($font_size) * strlen($text) ) ) / );

   
$center_y ceil( ( ( imagesy($image_resource) - ( ImageFontHeight($font_size) * $total_lines ) ) / 2)  + ( ($line_number-1) * ImageFontHeight($font_size) ) );

ImageString($image_resource$font_size$center_x$center_y$text$color );

}
?>
2008-08-19 18:02:07
http://php5.kiev.ua/manual/ru/function.imagestring.html
Some fun with imagestring:

This function is a product of too much time..
It opens an image and create a new image with one letter instead of a pixel.

<?php
error_reporting
(E_ALL);
/**
 * generates a image with chars instead of pixels
 *
 * @param string $url Filepath or url
 * @param string $chars The chars which should replace the pixels
 * @param int $shrpns Sharpness (2 = every second pixel, 1 = every pixel ... )
 * @param int $size 
 * @param int $weight font-weight/size
 * @return sesource
 * @author Nicolas 'KeksNicoh' Heimann <www.salamipla.net>
 * @date 02nov08
 */
function pixelfuck($url$chars='ewk34543§G§$§$Tg34g4g'$shrpns=1$size=4,$weight=2)
{
    list(
$w$h$type) = getimagesize($url);
   
$resource imagecreatefromstring(file_get_contents($url));
   
$img imagecreatetruecolor($w*$size,$h*$size);

   
$cc strlen($chars);
    for(
$y=0;$y <$h;$y+=$shrpns
        for(
$x=0;$x <$w;$x+=$shrpns)
           
imagestring($img,$weight,$x*$size,$y*$size$chars{@++$p%$cc}, imagecolorat($resource$x$y));
    return 
$img;
}

$url 'http://upload.wikimedia.org/wikipedia/commons/b/be/Manga_Icon.png';
$text 'I-dont-like-manga-...-Why-do-they-have-such-big-eyes? Strange-...-WHAT-WANT-YOU-DO?';

Header('Content-Type: image/png');
imagepng(pixelfuck($url$text16));
?>

Have fun  :)
2008-11-02 12:42:17
http://php5.kiev.ua/manual/ru/function.imagestring.html
I created an alternative using the function imagechar to create a string of an image.  The below function below was used to create an image the same height and width of the text string.  It is used on my website to mask users email addresses.

<?PHP

// Set your string somehow
$string 'your@example.com';

// Set font size
$font_size 4;

// Create image width dependant on width of the string
$width  imagefontwidth($font_size)*strlen($string);
// Set height to that of the font
$height imagefontheight($font_size);
// Create the image pallette
$img imagecreate($width,$height);
// Grey background
$bg    imagecolorallocate($img252525);
// White font color
$color imagecolorallocate($img255255255);
// Length of the string
$len strlen($string);
// Y-coordinate of character, X changes, Y is static
$ypos 0;
// Loop through the string
for($i=0;$i<$len;$i++){
   
// Position of the character horizontally
   
$xpos $i imagefontwidth($font_size);
   
// Draw character
   
imagechar($img$font_size$xpos$ypos$string$color);
   
// Remove character from string
   
$string substr($string1);   
   
}
// Return the image
header("Content-Type: image/gif");
imagegif($img);
// Remove image 
imagedestroy($img);

?>
2008-12-19 14:07:56
http://php5.kiev.ua/manual/ru/function.imagestring.html
Same function as above but it can display multi-line strings.
<?php
function sendimagetext($text) {
 
// Set font size
 
$font_size 4;

 
$ts=explode("\n",$text);
 
$width=0;
  foreach (
$ts as $k=>$string) { //compute width
   
$width=max($width,strlen($string));
  }

 
// Create image width dependant on width of the string
 
$width  imagefontwidth($font_size)*$width;
 
// Set height to that of the font
 
$height imagefontheight($font_size)*count($ts);
 
$el=imagefontheight($font_size);
 
$em=imagefontwidth($font_size);
 
// Create the image pallette
 
$img imagecreatetruecolor($width,$height);
 
// Dark red background
 
$bg imagecolorallocate($img0xAA0x000x00);
 
imagefilledrectangle($img00,$width ,$height $bg);
 
// White font color
 
$color imagecolorallocate($img255255255);

  foreach (
$ts as $k=>$string) {
   
// Length of the string
   
$len strlen($string);
   
// Y-coordinate of character, X changes, Y is static
   
$ypos 0;
   
// Loop through the string
   
for($i=0;$i<$len;$i++){
     
// Position of the character horizontally
     
$xpos $i $em;
     
$ypos $k $el;
     
// Draw character
     
imagechar($img$font_size$xpos$ypos$string$color);
     
// Remove character from string
     
$string substr($string1);     
    }
  }
 
// Return the image
 
header("Content-Type: image/png");
 
imagepng($img);
 
// Remove image
 
imagedestroy($img);
}
?>
2009-04-24 03:51:47
http://php5.kiev.ua/manual/ru/function.imagestring.html
Here is a small bit I made for writing to a image from right to left when you are limited to imagestring()

<?php

        $pageview_letters 
preg_split('//'$string, -); // Form are original array of letters.
       
$minus 6// The letter spacing in pixels
       
$first true// Whether or not we have started the string
       
$x 375// X Location of imagestring
       
$y 23// Y Location of imagestring
       
$letters = array(); // Initiate the array o letters.

       
foreach ( $pageview_letters as $letter ) {
       
           
$letters[] = $letter;
           
        }
       
       
$letters array_reverse$letters );
       
        foreach ( 
$letters as $letter ) {
       
            if ( 
$first ) {
           
               
imagestring$image2$x$y$letter$light_blue );
               
$first false;
               
            } else {
               
               
$x = ( $x $minus );
               
imagestring$image2$x$y$letter$light_blue );
               
            }
       
        }
?>
2009-09-04 19:52:27
http://php5.kiev.ua/manual/ru/function.imagestring.html
Автор:
Here is a function with similar declaration of imagestring() but who handles whitespaces (It creates new lines and 4 spaces instead of \n and \t) and image's size limits

<?php

/**
 * @author Booteille
 *
 * @param resource $image
 * @param int $font
 * @param int $x
 * @param int $y
 * @param string $string
 * @param int $color
 */
function whitespaces_imagestring($image$font$x$y$string$color) {
   
$font_height imagefontheight($font);
   
$font_width imagefontwidth($font);
   
$image_height imagesy($image);
   
$image_width imagesx($image);
   
$max_characters = (int) ($image_width $x) / $font_width ;
   
$next_offset_y $y;

    for(
$i 0$exploded_string explode("\n"$string), $i_count count($exploded_string); $i $i_count$i++) {
       
$exploded_wrapped_string explode("\n"wordwrap(str_replace("\t""    "$exploded_string[$i]), $max_characters"\n"));
       
$j_count count($exploded_wrapped_string);
        for(
$j 0$j $j_count$j++) {
           
imagestring($image$font$x$next_offset_y$exploded_wrapped_string[$j], $color);
           
$next_offset_y += $font_height;

            if(
$next_offset_y >= $image_height $y) {
                return;
            }
        }
    }
}

?>
2015-01-14 02:56:49
http://php5.kiev.ua/manual/ru/function.imagestring.html

    Поддержать сайт на родительском проекте КГБ