• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 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");
    ?>
    

    上篇:imagebmp()

    下篇:imagecharup()