图像中显示的文字也需要根据坐标位置进行绘制。PHP不仅支持更多的字体库,还提供了非常灵活的文本绘制方法。例如,在图表中绘制缩放、倾斜和旋转的文本。您可以使用函数(如imageString()、imageStringUP()或imageChar()使用的字体文本来绘制图像。这些功能的原型如下:
复制代码如下: bool imagestring(resource $ image,int $ font,int $ x,int $ y,string $ s,Int $ color)//绘制一行string bool imagestring up(resource $ image,int $ font,int $ x,int $ y,string $ s,Int $ color)//绘制一行string bool image char(resource $ image,int $ font,Int $ x,int $ y,char $ c, Int $color) //水平绘制字符bool image char up (resource $ image,int $ font,int $ x,int $ y,char $ c,int $ color)//垂直绘制字符
在上面列出的四个函数中,前两个函数imageString()和imageStringUP()用于在图像中水平和垂直输出字符串,而后两个函数imageChar()和imageCharUP()用于在图像中水平和垂直输出字符。虽然这四个函数不同,但调用方式相似。它们都绘制$image图像中第五个参数指定的字符,绘制位置都是从坐标($x,$y)输出的。如果水平绘制字符串,它将从左向右输出,而垂直绘制字符串将从下向上输出。这些函数可以通过最后一个参数$color给出文本的颜色。第二个参数$font给出了字符字体标识符,其值为整数1、2、3、4或5,因此使用了内置字体。数字越大,输出字符越大。以下是在图像中输出文本的示例:
复制代码代码如下:php $im=imagecreate(150,150);$bg=imagecolorallocate($im,255,255,255);//将画布的背景设置为白色$ black=imagecolorlocate ($ im,0,0,0);//将颜色变量设置为black $ string='灯罩';//图像中输出的字符imagestring ($ im,3,28,70,$ string,$ black);//将字符串水平输出到imagestringinup图像($ im,3,59,115,$ string,$ black);//从下到上垂直输入图像为($i=0,$ j=strlen($ string);$ is tren($ string);$ I,$ j-){//将单个字符循环到图像图像char ($ im,3,10 *(I $ 1),10 *(j $ 2),$ string [$ I],$ black);//斜向下输出每个字符图像char up ($ im,3,10 *(I $ 1),10 *(j $ 2),$ string [$ I],$ black);//斜向上输出每个字符} header(' content-type : image/png ');image png($ im);
除了通过上述四个函数输出内置字体外,还可以使用imageTtfText()函数输出独立于设备的可缩放TrueType字体。TrueType使用数学函数来描述字体的轮廓,既可以用作打印字体,也可以用作屏幕显示。各种操作系统都兼容这种字体。因为是用指令描述字体的,所以和分辨率没有关系,总是按照打印机的分辨率输出。无论放大还是缩小,字体总是平滑的,不会有锯齿。例如在Windows系统中,TrueType字体被标记在字体库所在的文件夹C:WINDOWSFonts中。例如,simsun.ttf在TrueType字体中是“”。imageTtfText()函数的原型如下:
复制代码如下: Array ImageTTFText(resource $ image,float $ size,float $ angle,int $ x,int $ y,int $ color,string $ fontfile,string $ text)
这个函数需要多个参数,其中参数$image需要提供一个图像资源。参数$size用于设置字体大小。根据GD库的不同版本,应该指定为像素大小(GD1)或点大小(GD2)。参数$angle是角度系统表示的角度,0是从左向右读取的文本,数值越高表示逆时针旋转。例如,90表示从下向上读取的文本。由两个参数($x,$y)表示的坐标定义了字符的基本点,它可能是字符的左下角。这与imagestring()函数不同,后者的($x,$y)坐标定义了第一个字符的左上角。参数$color指定颜色索引。使用负颜色索引值具有关闭抗锯齿的效果。请参阅$fontfile是您要使用的TrueType字体的路径。根据PHP使用的不同GD库,当fontfil不以“/”开头时。ttf”将被追加到文件名中,文件名将在库定义字体路径中搜索。最后一个参数$text指定要输出的文本字符串,该字符串可以包含十进制数字化字符表示形式(采用:),以访问字体中位置127以外的字符。UTF 8编码的字符串可以直接传递。如果字体不支持字符串中使用的字符,空矩形将替换该字符。
imagettftext()函数返回一个包含8个单元格的数组,按左下角、右下角、右上角和左上角的顺序表示文本轮廓的四个角。这些点都是相对于文字的,与角度无关,所以“左上角”指的是朝水瓶方向看文字时的左上角。通过下面例子中的脚本,我们生成了一张400X30像素的白色PNG图片,其中“回忆经典!”用黑色(带灰色阴影)书写代码如下:
复制代码代码如下:PHP $ im=imagecreatetrue color(400,30);//创建一个大小为400 30像素的画布$ white=imagecolorclocate($ im,255,255,255);$grey=imagecolorallocate($im,128,128,128);$black=imagecolorallocate($im,0,0,0);imagefiledrectangle($ im,0,0,399,29,$ white);//输出以白色为背景的矩形。//如果有中文输出,需要转码转换成UTF-8字符串后才能直接传递$text=iconv('GB2312 ',' UTF-8 ','追忆经典');//设置字体,将系统中simsun.ttc对应的字体复制到当前目录的$ font=' simsun.ttcimagettftext($im,20,0,12,21,$grey,$font,$ text);//输出一个灰色字符串作为shadow imagettftext ($ im,20,0,10,20,$ black,$ font,$ text);//在阴影上输出一个黑色字符串头(' content-type : image/png ');image png($ im);image destroy($ im);