在图像中显示的文字也需要按坐标位置画上去。在PHP中不仅支持比较多的字体库,而且提供了非常灵活的文字绘制方法。例如,在图中绘制缩放、倾斜、旋转的文字等。可以使用imageString()、imageStringUP()或imageChar()等函数使用的字体文字绘制到图像中。这些函数的原型如下所示:
bool imagestring(resource $image,int $font,int $x ,int $y,string $s,int $color) //水平地画一行字符串
bool imagestringup(resource $image,int $font,int $x ,int $y,string $s,int $color) //垂直地画一行字符串
bool imagechar(resource $image,int $font,int $x ,int $y,char $c,int $color) //水平地画一个字符
bool imagecharup(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,则是使用内置的字体,数字越大则输出的文字尺寸就越大。下面是在一个图像中输出文字的示例:
$im = imagecreate(150, 150);
$bg = imagecolorallocate($im, 255, 255, 255); //设置画布的背景为白色
$black = imagecolorallocate($im, 0, 0, 0); //设置一个颜色变量为黑色
$string = "LAMPBrother"; //在图像中输出的字符
imagestring($im, 3, 28, 70, $string, $black); //水平的将字符串输出到图像中
imagestringup($im, 3, 59, 115, $string, $black); //垂直由下而上输到图像中
for($i=0,$j=strlen($string);$i
imagecharup($im, 3, 10*($i+1),10*($j+2),$string[$i],$black); //向上倾斜输出每个字符
}
header('Content-type:image/png');
imagepng($im);
?>
通过上面介绍的四个函数输出内置的字体外,还可以使用imageTtfText()函数,输出一种可以缩放的与设备无关的TrueType字体。TrueType是用数学函数描述字体轮廓外形,即可以用做打印字体,又可以用作屏幕显示,各种操作系统都可以兼容这种字体。由于它是由指令对字形进行描述,因此它与分辨率无关,输出时总是按照打印机的分辨率输出。无论放大或是缩小,字体总是光滑的,不会有锯齿出现。例如在Windows系统中,字体库所在的文件夹C:\WINDOWS\Fonts下,对TrueType字体都有标注,如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图片,其中有黑色(带灰色阴影)“宋体”字体写的“回忆经典!”代码如下所示:
$im = imagecreatetruecolor(400, 30); //创建400 30像素大小的画布
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white); //输出一个使用白色填充的矩形作为背景
//如果有中文输出,需要将其转码,转换为UTF-8的字符串才可以直接传递
$text = iconv("GB2312", "UTF-8", "回忆经典");
//设定字体,将系统中与simsun.ttc对应的字体复制到当前目录下
$font = 'simsun.ttc';
imagettftext($im, 20, 0, 12, 21, $grey, $font, $text); //输出一个灰色的字符串作为阴影
imagettftext($im, 20, 0, 10, 20, $black, $font, $text); //在阴影上输出一个黑色的字符串
header("Content-type: image/png");
imagepng($im);
imagedestroy($im);
?>

PHP在现代Web开发中仍然重要,尤其在内容管理和电子商务平台。1)PHP拥有丰富的生态系统和强大框架支持,如Laravel和Symfony。2)性能优化可通过OPcache和Nginx实现。3)PHP8.0引入JIT编译器,提升性能。4)云原生应用通过Docker和Kubernetes部署,提高灵活性和可扩展性。

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP和Python各有优势,适合不同场景。1.PHP适用于web开发,提供内置web服务器和丰富函数库。2.Python适合数据科学和机器学习,语法简洁且有强大标准库。选择时应根据项目需求决定。

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

PHP成为许多网站首选技术栈的原因包括其易用性、强大社区支持和广泛应用。1)易于学习和使用,适合初学者。2)拥有庞大的开发者社区,资源丰富。3)广泛应用于WordPress、Drupal等平台。4)与Web服务器紧密集成,简化开发部署。

PHP在现代编程中仍然是一个强大且广泛使用的工具,尤其在web开发领域。1)PHP易用且与数据库集成无缝,是许多开发者的首选。2)它支持动态内容生成和面向对象编程,适合快速创建和维护网站。3)PHP的性能可以通过缓存和优化数据库查询来提升,其广泛的社区和丰富生态系统使其在当今技术栈中仍具重要地位。

在PHP中,弱引用是通过WeakReference类实现的,不会阻止垃圾回收器回收对象。弱引用适用于缓存系统和事件监听器等场景,需注意其不能保证对象存活,且垃圾回收可能延迟。

\_\_invoke方法允许对象像函数一样被调用。1.定义\_\_invoke方法使对象可被调用。2.使用$obj(...)语法时,PHP会执行\_\_invoke方法。3.适用于日志记录和计算器等场景,提高代码灵活性和可读性。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

WebStorm Mac版
好用的JavaScript开发工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。