imagechar

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecharDessine un caractère horizontalement

Description

imagechar(
    GdImage $image,
    GdFont|int $font,
    int $x,
    int $y,
    string $char,
    int $color
): bool

imagechar() dessine le premier caractère de la chaîne char dans l'image image avec le coin supérieur gauche placé à la position x,y (le coin en haut à gauche est l'origine (0,0)) avec la couleur color.

Liste de paramètres

image

Un objet GdImage, retournée par une des fonctions de création d'images, comme imagecreatetruecolor().

font

Peut être 1, 2, 3, 4, 5 pour les polices internes d'encodage Latin2 (où les plus grands nombres correspondent aux polices larges) ou une instance de GdFont retourné par imageloadfont().

x

X : coordonnée de départ.

y

Y : coordonnée de départ.

char

Le caractère à dessiner.

color

Un identificateur de couleur créé avec imagecolorallocate().

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Historique

Version Description
8.1.0 Le paramètre font accepte désormais une instance de GdFont et un entier; auparavant seulement un entier était accepté.
8.0.0 image attend une instance de GdImage désormais; auparavant, une resource gd était attendue.

Exemples

Exemple #1 Exemple avec imagechar()

<?php

$im
= imagecreate(100, 100);

$string = 'PHP';

$bg = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);

// affiche un "P" noir dans le coin gauche en haut
imagechar($im, 1, 0, 0, $string, $black);

header('Content-type: image/png');
imagepng($im);

?>

Résultat de l'exemple ci-dessus est similaire à :

Affichage de l'exemple : imagechar()

Voir aussi

add a note add a note

User Contributed Notes 2 notes

up
2
liam dot wiltshire at lineone dot net
15 years ago
A quick function to automatically generate a multi line image from a string, with the image size automatically calculated from the string itself.

<?php

function multilineimage($string){

   
// Probably not the best way of handling newlines, but bar OS9, doesn't really cause a problem
   
$string = str_replace("\r","",$string);
   
$string = explode("\n",$string);

   
$maxlen = 0;
    foreach (
$string as $str){
        if (
strlen($str) > $maxlen){
           
$maxlen = strlen($str);
        }
    }

   
// Set font size
   
$font_size = 4;

   
// Create image width dependant on width of the string
   
$width  = imagefontwidth($font_size)*$maxlen;
   
// Set height to that of the font
   
$height = imagefontheight($font_size) * count($string);
   
// Create the image pallette
   
$img = imagecreate($width,$height);
   
// Grey background
   
$bg    = imagecolorallocate($img, 205, 255, 255);
   
// White font color
   
$color = imagecolorallocate($img, 0, 0, 0);

   
$ypos = 0;

    foreach (
$string as $str){

       
$len = strlen($str);
        for(
$i=0;$i<$len;$i++){
           
// Position of the character horizontally
           
$xpos = $i * imagefontwidth($font_size);
           
// Draw character
           
imagechar($img, $font_size, $xpos, $ypos, $str, $color);
           
// Remove character from string
           
$str = substr($str, 1);  
        }
       
$ypos = $ypos + imagefontheight($font_size);  
    }

   
// Return the image
   
header("Content-Type: image/gif");
   
imagegif($img);
   
// Remove image
   
imagedestroy($img);
}

multilineimage("This is an image
This is line 2\nLine 3
Line 4"
);

?>
up
2
sw at profilschmiede dot de
19 years ago
For the sake of completeness, here is an example for imagechar.
The base-image automatically adjusts to the size and the height of the given string. Using the rand()-function the y-position of each char is slightly varied with every loop-run. You can easily rewrite the script to use a randomly generated string - the one given here just serves as an example.

<?php

$string
= '1 2 3 4 5 6 7 8 9 A B C D E F G';
$font_size = 5;
$width=imagefontwidth($font_size)*strlen($string);
$height=imagefontheight($font_size)*2;
$img = imagecreate($width,$height);
$bg = imagecolorallocate($img,225,225,225);
$black = imagecolorallocate($img,0,0,0);
$len=strlen($string);

for(
$i=0;$i<$len;$i++)
{
   
$xpos=$i*imagefontwidth($font_size);
   
$ypos=rand(0,imagefontheight($font_size));
   
imagechar($img,$font_size,$xpos,$ypos,$string,$black);
   
$string = substr($string,1);   
   
}
header("Content-Type: image/gif");
imagegif($img);
imagedestroy($img);
?>
To Top