PHP 带文字的图像

本文最后更新于:2024年3月18日 凌晨

PHP 带文字的图像

  • 我们经常要在图像上添加文字,GD有内置的字库来完成这个功能,示例9-5在黑色正方形上添加了一些文字。

示例9-5:添加文字到图像中。

1
2
3
4
5
6
7
8
9
<?php
$im = ImageCREATE(200,200);
$white = ImageColorAllocate($im,0xFF,0xFF,0xFF);
$black = ImageColorAllocate($im,0x00,0x00,0x00);
ImageFilledRectangle($im,50,50,150,150,$black);
ImageString($im,5,50,160,"A Black Box",$black);
Header('Content-Type:image/png');
ImagePNG($im);
?>
  • ImageString()函数用于向图像添加文字,并指定了文字的左上角坐标,颜色和字体。
1
ImageString(image,font,x,y,text,color);

TrueType字体

  • GD中的字体用数字编号来标识。
  • 用来展示TureType字体的PHP代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$im = ImageCREATE(200,200);
$white = ImageColorAllocate($im,0xFF,0xFF,0xFF);
$black = ImageColorAllocate($im,0x00,0x00,0x00);
ImageString($im,1,10,10,"Font 1: ABCDEfghji",$black);
ImageString($im,2,10,30,"Font 1: ABCDEfghji",$black);
ImageString($im,3,10,50,"Font 1: ABCDEfghji",$black);
ImageString($im,4,10,70,"Font 1: ABCDEfghji",$black);
ImageString($im,5,10,90,"Font 1: ABCDEfghji",$black);
Header("Content-Type:image/png");
ImagePNG($im);
>?>
  • 你可以创建自己的字体,并用ImageLoadFont() 函数来将其载入GD,但是这些字体是二进制的,并且与体系结构相关,用GD中的TrueType函数来创建TrueType字体具有更大的灵活性,是一种更好的方法。
  • 要在GD中使用TrueType字体,PHP需要和提供TrueType支持的FreeTypeFreeType库一起编译,检查一下你的phpinfo()页面,查看GD这一部分中"FreeType”选项是否已经启用。
  • 要向图像中添加TrueType字体的文字,可使用imageTTFText()函数:
1
ImageTTFText(image,size,angle,x,y,color,font,text);
  • size参数以像素为单位,angle是从3点钟位置开始计算的角度,(例如angle为0则生成水平方向的文字,90则生成垂直方向的文字),x和y坐标指定文字左下角的坐标(这与ImageString()不同,它指明的是左上角的坐标),文字也许会包含ê(&#234;)形式的UTF-8前缀,用于输出ASCII字符的高位。
  • 在GD1.x中,font参数是一个包含.uf扩展名的完整路径文件名,在GD2.x中,默认情况下,PHP会到/usr/share/fonts/truetype目录下查找字体文件,并自动添加小写的.ttf后缀,字体大小在GD1.x和GD2.x中也有一些细微差别。
  • 默认的,使用TrueType字体的文字是抗锯齿的,这将使大多数字体易于识别,尽管可能有轻微的模糊,抗锯齿会使一些小字难以识别----因为小字中的像素比较少,所以抗锯齿的调节是很重要的,要在适当的时候使用。
  • 你可以把抗锯齿功能禁用,通过使用一个负的颜色值(如,-4意味着使用4号颜色,但不使用抗锯齿功能)

示例9-6:使用TrueType字体来向图像添加文字。

1
2
3
4
5
6
7
8
<?php
$im= ImageCreate(200,200);
$white=ImageColorAllocate($im,0xFF,0xFF,0xFF);
$black = ImageColorAllocate($im,0x00,0x00,0x00);
ImageTTFText($im,20,0,10,40,$black,'Arial','The courier TTF font');
Header('Content-Type:image/png');
ImagePNG($im);
?>

示例9-7:使用ImageTTFText()函数向图像中添加竖直排列的文字:

1
2
3
4
5
6
7
8
<?php
$im = ImageCreate(200, 200);
$white = ImageColorAllocate($im, 0xFF, 0xFF, 0xFF);
$black = ImageColorAllocate($im, 0x00, 0x00, 0x00);
ImageTTFText($im, 20, 270, 10, 40, $black, 'Arial', 'The courier TTF font');
Header('Content-Type:image/png');
ImagePNG($im);
?>

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!