首页 后端开发 php教程 PHP中创建图像并绘制文字的例子_php技巧

PHP中创建图像并绘制文字的例子_php技巧

May 16, 2016 pm 08:30 PM
php

在图像中显示的文字也需要按坐标位置画上去。在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 imagechar($im, 3, 10*($i+1),10*($j+2),$string[$i],$black); //向下倾斜输出每个字符
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);
 
?>
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 使用数据库 CakePHP 使用数据库 Sep 10, 2024 pm 05:25 PM

在 CakePHP 中使用数据库非常容易。本章我们将了解CRUD(创建、读取、更新、删除)操作。

CakePHP 日期和时间 CakePHP 日期和时间 Sep 10, 2024 pm 05:27 PM

为了在 cakephp4 中处理日期和时间,我们将使用可用的 FrozenTime 类。

CakePHP 文件上传 CakePHP 文件上传 Sep 10, 2024 pm 05:27 PM

为了进行文件上传,我们将使用表单助手。这是文件上传的示例。

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

在本章中,我们将学习以下与路由相关的主题?

讨论 CakePHP 讨论 CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

CakePHP 创建验证器 CakePHP 创建验证器 Sep 10, 2024 pm 05:26 PM

可以通过在控制器中添加以下两行来创建验证器。

CakePHP 日志记录 CakePHP 日志记录 Sep 10, 2024 pm 05:26 PM

登录 CakePHP 是一项非常简单的任务。您只需使用一项功能即可。您可以记录任何后台进程(如 cronjob)的错误、异常、用户活动、用户采取的操作。在 CakePHP 中记录数据很容易。提供了 log() 函数

See all articles