ConFoo: Call for paper is now Open

imagechar

(PHP 4, PHP 5)

imagecharDibujar un carácter horizontalmente

Descripción

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

imagechar() dibuja el primer carácter de c en la imagen identificada por image con su límite superior izquierdo en x,y (el límite superior izquierdo es 0, 0) con el color color.

Parámetros

image

Un recurso image, es devuelto por una de las funciones de creación de imágenes, como imagecreatetruecolor().

font

Puede ser 1, 2, 3, 4, 5 para fuentes built-in en latin2 encoding (los números más altos corresponden a large fonts) o cualquier de sus propios identificadores de fuentes registrados con imageloadfont().

x

Coordenada x del inicio.

y

Coordenada y del inicio.

c

El carácter a dibujar.

color

Un identificador de color creado con imagecolorallocate().

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Ejemplos

Ejemplo #1 Ejemplo de imagechar()

<?php

$im 
imagecreate(100100);

$cadena 'PHP';

$fondo imagecolorallocate($im255255255);
$negro imagecolorallocate($im000);

// imprime una "P" negra en la esquina superior izquierda
imagechar($im100$cadena$negro);

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

?>

El resultado del ejemplo sería algo similar a:

Salida del ejemplo : imagechar()

Ver también

add a note add a note

User Contributed Notes 2 notes

up
2
liam dot wiltshire at lineone dot net
5 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
0
sw at profilschmiede dot de
9 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