imagechar()
(PHP 4, PHP 5, PHP 7)
水平地画一个字符
说明
imagechar(resource $image,int $font,int $x,int $y,string $c,int $color): bool
imagechar()将字符串$c的第一个字符画在$image指定的图像中,其左上角位于$x,$y(图像左上角为 0, 0),颜色为$color。如果$font是 1,2,3,4 或 5,则使用内置的字体(更大的数字对应于更大的字体)。
imagechar()例子
<?php $im = imagecreate(100,100); $string = 'PHP'; $bg = imagecolorallocate($im, 255, 255, 255); $black = imagecolorallocate($im, 0, 0, 0); // prints a black "P" in the top left corner imagechar($im, 1, 0, 0, $string, $black); header('Content-type: image/png'); imagepng($im); ?>
参见imagecharup()和imageloadfont()。
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); ?>
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"); ?>