Home  >  Article  >  Backend Development  >  Learn to use PHP to generate dynamic images

Learn to use PHP to generate dynamic images

WBOY
WBOYOriginal
2016-08-08 09:33:591029browse

Many people don't know that php can generate non-HTML data. This is very useful for generating image graphics. You can generate a simple advertising horizontal image from the database or simply generate a graphic button.

I used TTF font in the example below
I usually name it 'button.php3':

################################################ #####
-----button.php3------
Header("Content-type: image/gif");
if(!isset($s)) $s=11;
$size = imagettfbbox($s,0,"fonts/TIMES.TTF",$text);
$dx = abs($size[2]-$size[0]);
$dy = abs($size[5]-$size[3]);
$xpad=9;
$ypad=9;
$im = imagecreate($dx+$xpad,$dy+$ypad);
$blue = ImageColorAllocate($im, 0x2c,0x6D,0xAF);
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
ImageRectangle($im,0,0,$dx+$xpad-1,$dy+$ypad-1,$black);
ImageRectangle($im,0,0,$dx+$xpad,$dy+$ypad,$white);
ImageTTFText($im, $s, 0, (int)($xpad/2)+1, $dy+(int)($ypad/2), $black, "fonts/TIMES.TTF", $text);
ImageTTFText($im, $s, 0, (int)($xpad/2), $dy+(int)($ypad/2)-1, $white, "fonts/TIMES.TTF", $text);
ImageGif($im);
ImageDestroy($im);
?>
################################################ #####
It is very important that you cannot put any HTML tags in this file. There cannot be any blank lines before or after the tags. If you see an incomplete image after using this script, it means that you Possibly a mistyped character outside of the PHP tag.

The above script can be called in the web page using this syntax:

################################################ #####
----test.php-----




New Page 1








################################################ #####

The result of test.php will look like this: .

The 's' parameter is to set the font size.

This is when s=18:

Note I:
The font path "/fonts/TIMES.TTF" can be obtained from the windows/fonts directory. The TIMS.TTF font file can be tested by copying it to the directory fonts of your website. As for the Chinese performance, netizens are yet to provide their feedback

Note that I first drew a black square area and then used white displacement to create a 3D effect. The L method can also be seen on a light background, but you can change the background color to a dark color to see the effect. The same effect is also done for the fonts Express three-dimensionality.

You need to first make sure that your PHP installation is configured to support GD and TTF. Please refer to the PHP FAQ. I recommend copying libgd.a to /usr/local/lib and gd*.h related files to /usr/local/include Then
'make install' for FreeTTF library.​

You can find the Chai httf font here http://rover.wiesbaden.netsurf.de/~kikita/!

Note:

The following source code improves the above 弁? can display multi-line text:
################################################ #####
---------------button.php-----------------

Header("Content-type: image/jpeg");
if(!isset($bgred)) $bgred=0;
if(!isset($bggreen)) $bggreen=51;
if(!isset($bgblue)) $bgblue=153;
if(!isset($chred)) $chred=255;
if(!isset($chgreen)) $chgreen=255;
if(!isset($chblue)) $chblue=255;
if(!isset($shadow)) $shadow="yes";
if(!isset($wrappos)) $wrappos=20;
if(!isset($crop)) $crop=2.2;
if(!isset($jpegquality)) $jpegquality=80;
if(!isset($s)) $s=11;
$savetext=$text;
$text=Wordwrap($text,$wrappos," ",0);
if (!isset($font)) $fontname="/www/ttfonts/arialbd.ttf";
else
$fontname="/www/ttfonts/".$font.".ttf";
$size = imagettfbbox($s,0,$fontname,$text);
$dx = abs($size[2]-$size[0]);
$dy = abs($size[5]-$size[3]);
$upper=abs($size[5]);
$under=$size[1];
$th=$upper-$under;
$xpad=9;
if (substr_count($text,chr(13))>=1)
{
$mult=(substr_count($text,chr(13)));
$ypad=($mult*$crop*$s)+$s;
}
else $ypad=($crop-2)*$s;
$im = imagecreate($dx+$xpad,$th+$ypad);
$color = ImageColorAllocate($im, $bgred,$bggreen,$bgblue);
$black = ImageColorAllocate($im, 0,0,0);
$fontcolor = ImageColorAllocate($im, $chred,$chgreen,$chblue);
ImageRectangle($im,0,0,$dx+$xpad-1,$th+$ypad-1,$black);
ImageRectangle($im,0,0,$dx+$xpad,$th+$ypad,$white);
if ($shadow=="yes")
ImageTTFText($im, $s, 0, (int)($xpad/2)-2+1, $th+2+(int)($ypad/2)-3, $black, $fontname, $text);
ImageTTFText($im, $s, 0, (int)($xpad/2)-2, $th+2+(int)($ypad/2)-1-3, $fontcolor, $fontname, $text);
Imagejpeg($im,"",$jpegquality);
ImageDestroy($im);

?>
#######################################################
这可以下面这个 form 来产生:
#######################################################
----------test.php--------------------



New Page 1





文字


大小


断句的位置(wrap break position)


背景颜色


红色     
     绿色     
      蓝色


字元颜色


红色    
      绿色      
     蓝色


字型


阴影 是  
               


Crop size


Jpeg 品质 (0-100)



      





#######################################################

或是直接像上例一样呼叫:  

#######################################################
----test.php-----  



New Page 1


  

  


 

以上就介绍了学会用PHP产生动态的影像图,包括了动态影像图方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn