Rumah  >  Artikel  >  pembangunan bahagian belakang  >  PHP图片处理(中)- 绘制文字

PHP图片处理(中)- 绘制文字

齐天大圣
齐天大圣asal
2020-05-03 10:58:07145semak imbas

绘制普通文字

函数:imagestring()

imagestring ( resource $image , int $font, int $x, int $y, string $s, int $col) : bool

imagestring() 用 col    颜色将字符串 s 画到 image    所代表的图像的 x,y    坐标处(这是字符串左上角坐标,整幅图像的左上角为 0,0)。如果    font 是 1,2,3,4 或 5,则使用内置字体。

使用imagestring来绘制字体,有点事非常简单。但缺陷也非常明显,字体大小只有1到5,且不支持中文字符。

<?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, &#39;hello world&#39;, $strColor);
// 垂直方向文字
imagestringUp($imgHandler, 5,45, 99, &#39;hello world&#39;, $strColor);
header("Content-Type:image/png");
imagepng($imgHandler);
imagedestroy($imgHandler);

使用字体库绘制文字

使用imagestring来绘制文字,非常简单。但有几个缺陷。首先:它不能绘制中文,另外,使用imagestring绘制出的文字不会太大。

这里我们使用imagettftext来绘制文字,imagettftext除了能设置字体大小外,还可以给字体设置倾斜角度。

使用前,我们需要找一些ttf格式的字体。在windows系统下的C:\Windows\Fonts目录,有许多字体。

<?php
/* 使用imagettftext向图像正中写文字 */

$im = imagecreatetruecolor(300, 300);
$bgColor = imagecolorallocate($im, 222,222,222);
imagefill($im,0, 0, $bgColor);
$size = 30;
$angle = 0;
$font = &#39;D:\wwwroot\stdphp\img\font/msyhbd.ttf&#39;;
$text = &#39;大圣到此一游&#39;;

//获取文字信息
$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);

绘制的图片效果如下:

blog20043016024927296.png

Atas ialah kandungan terperinci PHP图片处理(中)- 绘制文字. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:PHP图片处理(上)- 基础Artikel seterusnya:PHP图片处理(下)