Home  >  Article  >  Backend Development  >  Use PHP to generate dynamic images_PHP tutorial

Use PHP to generate dynamic images_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 16:04:51846browse

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 use TTF The font is in the following example
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. Also 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 may have accidentally typed characters outside of the PHP tags.

The above script can be called out on 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. Copy the TIMS.TTF font file to the fonts directory of your website to test. As for the performance of Chinese, 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 dark to see this effect. The fonts are also done In order to achieve the same effect to express the three-dimensional effect.

You must first make sure that your PHP installation has settings to support GD and TTF. Please refer to the PHP FAQ. I suggest you copy libgd.a to /usr/local/lib and gd*.h related files to /usr/local/include and then
'make install' for FreeTTF library.

can be found here http://rover.wiesbaden.netsurf.de/~kikita/璗httf font!

Note:

The following source code improves the above 偁? multi-line text display:
########### ##########################################
--- ----------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


  

  


 

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/315865.htmlTechArticleMany people don’t know that PHP can generate non-HTML data. This is very useful for generating images. It can be obtained from database generates a simple advertising horizontal image or simply generates a graphic button...
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