Home > Article > Backend Development > PHP image processing (medium) - drawing text
Drawing ordinary text
Function: imagestring()
imagestring ( resource $image , int $font, int $x, int $y, string $s, int $col) : bool
imagestring() Use col color to draw the string s to the x of the image represented by image, y coordinate (this is the coordinate of the upper left corner of the string, the upper left corner of the entire image is 0, 0). If font is 1, 2, 3, 4 or 5, the built-in font is used.
Using imagestring to draw fonts is very simple. But the flaws are also very obvious. The font size is only 1 to 5, and Chinese characters are not supported.
<?php /**绘制文字**/ $imgHandler = imagecreatetruecolor(100,100); // 绘制矩形并填充 $borderCol = imagecolorallocate($imgHandler, 23, 32, 200); imagefilledrectangle($imgHandler, 0, 0, 99, 99, $borderCol); // 绘制水平方向文字 $strColor = imagecolorallocate($imgHandler, mt_rand(0,100), mt_rand(0, 100), mt_rand(0, 100)); imagestring($imgHandler, 5,1, 45, 'hello world', $strColor); // 垂直方向文字 imagestringUp($imgHandler, 5,45, 99, 'hello world', $strColor); header("Content-Type:image/png"); imagepng($imgHandler); imagedestroy($imgHandler);
Use the font library to draw text
Use imagestring to draw text, it is very simple. But there are several flaws. First of all: it cannot draw Chinese. In addition, the text drawn using imagestring will not be too large.
Here we use imagettftext to draw text. In addition to setting the font size, imagettftext can also set the tilt angle of the font.
Before use, we need to find some fonts in ttf format. There are many fonts in the C:\Windows\Fonts directory under the Windows system.
<?php /* 使用imagettftext向图像正中写文字 */ $im = imagecreatetruecolor(300, 300); $bgColor = imagecolorallocate($im, 222,222,222); imagefill($im,0, 0, $bgColor); $size = 30; $angle = 0; $font = 'D:\wwwroot\stdphp\img\font/msyhbd.ttf'; $text = '大圣到此一游'; //获取文字信息 $info = imagettfbbox($size, $angle, $font, $text); $minx = min($info[0], $info[2], $info[4], $info[6]); $maxx = max($info[0], $info[2], $info[4], $info[6]); $miny = min($info[1], $info[3], $info[5], $info[7]); $maxy = max($info[1], $info[3], $info[5], $info[7]); ///* 计算文字初始坐标和尺寸 */ $x = $minx; $y = abs($miny); $w = $maxx - $minx; $h = $maxy - $miny; /* 随机文字颜色 */ $textColor = imagecolorallocate($im, mt_rand(0,150), mt_rand(0,150), mt_rand(0,150)); imagettftext($im, $size, $angle, (300 - $w) / 2 + $x, (300 - $h) / 2 + $y, $textColor, $font, $text); header("Content-type:image/png"); imagepng($im); imagedestroy($im);
The picture effect drawn is as follows:
The above is the detailed content of PHP image processing (medium) - drawing text. For more information, please follow other related articles on the PHP Chinese website!