PHP图形技术简介
PHP可以用来独立创建和操作图形元素。因此,PHP图形处理的范围和能力是非常强大的。
它借助于GD 库,目前支持jpeg 、png 、gif 和wbmp 中的图片格式。
本教程将为在PHP中创建和操作图形元素的步骤和过程提供坚实的基础。
前提条件
要继续学习本教程,你需要具备以下条件。
- PHP的基本知识。
- 一个编辑器,如[Visual Studio Code]。
- 一个Web服务器,如本地安装的Apache和Nginx。
GDlibrary/extension。你可以通过在 文件中搜索 来确认你是否安装了它。你应该找到 ,否则可以在网上免费下载。php.inigdextension=php_gd2.dll
如何创建画布、墨水和画笔
假设你是一个传统的艺术家,想画一幅画,你将需要一个画布来画,一个画笔来画,以及画笔使用的墨水。
这也是我们在处理PHP图形时采用的惯例,幸运的是,GD 扩展为我们提供了可以充当画布、画笔和墨水的函数。
第1步:创建一个空白画布
在创建空白画布时,有两种选择。我们可以使用下面的任何一个函数。
<?php
imagecreate($width,$height);
?>
或另一个函数。
<?php
imagecreatetruecolor($width,$height);
?>
imagecreate() 函数是一个固有的PHP函数,帮助你创建一个新的图像/画布。该函数接受两个参数并返回一个空白画布,其大小由传递给该函数的宽度和高度参数决定。
另外,imagecreatetruecolor() 函数也被用来创建一个新的空白画布。它接受两个参数,代表画布的长度和宽度。
它是比较好的,通常推荐使用,因为最终的图形质量将优于imagecreate() 。在本教程中,我们将使用imagecreatetruecolor() 函数。
为了创建一个空白画布,我们实现下面的片段。
<?php
$image = imagecreatetruecolor($width,$height);
?>
以下是所需的参数。
$width:画布的宽度。$height:画布的高度。$image:该函数返回一个资源,所以我们把它存储在一个变量中。
由于我们此时看不到空白画布,你可以使用var_dump 函数来确定它是否被创建。
<?php
Var_dump($image);
?>
如果该函数在终端返回一个资源,那么一切都很顺利。
第2步:创建墨水
imagecolorallocate() 函数可以用来创建链接,它需要四个参数。这是一个默认的PHP函数,用于给图像分配颜色。
该函数返回一个由提供的参数决定的RGB颜色值,如果操作失败则返回false 。
<?php
$color = Imagecolorallocate($image, $red, $green, $blue);
?>
以下是该片段中的参数。
$image:一个代表已经创建的画布的资源。$red:一个对应于红色的RGB值的整数。$green:一个对应于绿色的RGB值的整数。$blue:对应于蓝色的RGB值的整数。$color:该函数返回一个存储在该变量中的整数。
imagecolorallocate() 你也可以var_dump() ,以确保该函数返回的值是成功的。如果一切顺利,你应该得到一个整数。
下面是一个工作实例。
<?php
$image = imagecreatetruecolor(500,250);
$red = imagecolorallocate($image,255,0,0);
$green = imagecolorallocate($image,0,255,0);
$blue = imagecolorallocate($image,0,0,255);
?>
在上面的代码片段中,我们创建了三种原色,以便在需要时使用。
首先,使用imagecreatetruecolor() 函数创建了一个尺寸为500x250 的空白画布,并存储在$image 变量中。
然后,使用imagecolorallocate() 函数创建三种不同的颜色。第一个参数代表已经创建的空白画布,而后三个参数是所需颜色的RGB值。
如何创建画笔
PHPimagefill() 函数使我们能够在画布上涂抹墨水。但是,首先,它用所选择的颜色填满画布,从对应于$x 和$y 坐标的点开始。
该函数在失败时返回一个布尔值,即真或假。
注意,左上角可以通过设置
x和y坐标为零(0)来获得。这将淹没整个画布,而不管其大小如何。
<?php
imagefill($image,$x,$y,$color);
?>
以下是该片段的参数。
$image= 一个由任何图像创建函数返回的变量资源,例如: 。imagecreatetruecolor()$x= 这个变量存储一个X坐标的值。$y= 这个变量存储一个Y坐标的值。$ color= 代表使用 函数生成的颜色。imagecolorallocate()
输出你的图像
没有视觉化的艺术是什么?要在浏览器上输出你的图像,你需要两个函数,它们是。
header()函数。image(format)函数各需要一个参数。
header() 函数的参数接受一个字符串,用来表示资源的媒体类型。媒体类型是一个与文件一起发送的字符串,显示文件的格式。
image(format) 函数是一个默认的PHP函数,用于在浏览器上显示图像或将图像存储为文件。
<?php
header('content-type: image/jpeg');
imagejpeg($image);
?>
该片段的参数是:$image = 由某个图像创建函数返回的可变资源,例如imagecreatetruecolor() 函数。这就是我们要输出的实际图像。
考虑下面的例子,我们试图把东西放在一起并输出我们的图像。
<?php
//how to create our first image
$image = imagecreatetruecolor(500,250);
//Allocate colors to the image
$red = imagecolorallocate($image,255,0,0);
$green = imagecolorallocate($image,0,255,0);
$blue = imagecolorallocate($image,0,0,255);
Imagefill($image,0,0,$blue);
//display the image
header('content-type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
?>
从上面的代码片断来看,我们。
- 使用
imagecreatetruecolor()函数创建了一个尺寸为500x250的空白画布。 - 我们使用
imagecolorallocate()函数为变量$red,$green, 和$blue分配颜色。 - 之后,我们使用
imagefill()函数对我们已经创建的空白画布进行了泛滥填充。 - 然后,我们使用
header和imagejpeg函数的组合,在浏览器上以jpeg格式显示我们的图像。 - 最后,我们销毁了存储为
$image的资源。
输出。

绘制几何图形
让我们通过绘制一些几何图形来使我们的技能更上一层楼。GD 库可以容纳所有这些。
如何画一个矩形
绘制一个矩形是比较容易的。我们使用一个叫做imagerectangle() 的函数来帮助我们。这个函数需要六个参数。让我们仔细看看它。
<?php
Imagerectangle($image, $x1, $y1, $x2, $y2, $color);
?>
需要的参数是。
$image= 一个由某个图像创建函数返回的变量资源,例如, 。这就是我们要画矩形的地方。imagecreatetruecolor()$x1,$y1= 点1的X和Y坐标。$x2,$y2= 点2的X和Y坐标。$color= 一个代表使用 函数创建的颜色的变量。imagecolorallocate()
让我们考虑下面的例子。
<?php
//create the image
$image = imagecreatetruecolor(500,250);
//Allocate colors to the image
$red = imagecolorallocate($image,255,0,0);
$green = imagecolorallocate($image,0,255,0);
$blue = imagecolorallocate($image,0,0,255);
Imagefill($image,0,0,$blue);
//draw a rectangle
Imagerectangle($image, 30, 100, 200, 200, $red);
//display the image
header('content-type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
?>
上面的代码对你来说应该很熟悉,因为我们已经在前面的例子中解释了它的一些部分。尽管如此,我们还是要再看一遍。
要画一个矩形。
- 我们首先创建一个空白画布,使用
imagecreatetruecolor()函数在上面绘制矩形。然后我们将返回的资源存储在$image变量中。 - 接下来,我们使用
imagecolorallocate()函数创建三种不同的颜色,并将它们分配给变量$red,$green, 和$blue。 - 然后,我们进行泛滥填充,给画布一个蓝色的背景颜色,这是用
imagefill()函数完成的。 - 然后,我们使用
imagerectangle函数来绘制矩形。 - 然后使用
header()和imagejpeg()函数在浏览器上查看图像,之后使用imagedestroy()函数将其销毁。
输出。

在上面的例子中,我们在我们创建的具有蓝色背景的图像上画了一个红色边框的矩形。
如何画一个多边形
我们使用imagepolygon() 函数来画一个多边形。该函数接受四个参数,如下图所示。
<?php
imagepolygon($image, $points, $totalpoints, $color);
?>
让我们来看看这些参数。
$image= 一个由某个图像创建函数返回的变量资源,例如, 。这就是我们要画矩形的地方。imagecreatetruecolor()$points= 一个包含多边形顶点的数组。$totalpoints= 总的点数。$color= 一个变量,代表使用 函数创建的颜色。imagecolorallocate
请看一下下面的示例代码。
<?
$image = Imagecreatetruecolor(500,250);
$white = imagecolorallocate($image, 255, 255, 255);
$blue = imagecolorallocate($image, 0, 0, 255);
Imagefill($image, 0, 0, $blue);
//Draw polygon
Imagepolygon($image, array(20,20,
50,140,
100,200,
220,180), 4, $white);
//display the image
header('content-type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
?>
考虑到该代码片段的某些部分是重复的,让我们来看看//draw polygon 评论中的代码。
我们使用imagepolygon() 函数来绘制多边形。该函数接受四个参数,如下图所示。
- 第一个参数代表我们要画的画布。
- 第二个参数是一个数组,按X1、Y1、X2、Y2等成对出现,代表多边形的顶点。你可以通过向数组添加更多的X和Y对来增加顶点。
- 第三个参数确认点的总数,即
4,而最后一个参数$white将使多边形以白色绘制。 - 然后,我们像往常一样,使用
header()和imagejpeg()函数显示输出,最后销毁资源。
运行上述代码后,预计你会得到类似这样的输出。
如何在画布上书写文字
它们是由GD 库提供的几个函数,可以用来在画布上写文字。
我们将使用imagestring() 函数,因为它很容易使用和理解。
<?php
imagestring($image, $size, $x, $y, $string, $color);
?>
以下是所需的参数。
$image:一个由某个图像创建函数返回的变量资源,例如,imagecreatetruecolor()。这就是我们要写上文字的地方。$size:一个变量代表写在画布上的文字的大小(可用大小为1到5)。$x:是左边画布边界到第一个字的左下角的距离。$y:是画布顶部边框到第一个字的左下角的距离。
注意:
$y不应该是零(0),否则你将无法查看画布上的字。
$color: 代表使用 函数创建的颜色的一个变量。imagecolorallocate()$string:代表将被写在画布上的文字。
下面是一个如何在画布上书写文字的工作实例。
<?php
//creates the image
$image = imagecreatetruecolor(500,250);
//Allocate colors to the image
$red = imagecolorallocate($image,255,0,0);
$green = imagecolorallocate($image,0,255,0);
$blue = imagecolorallocate($image,0,0,255);
$white = imagecolorallocate($image,255,255,255);
imagefill($image,0,0,$blue);
//write on the canvas
imagestring($image, 5, 100, 50, 'I love PHP', $white);
//display the image
header('content-type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
?>
在创建一个空白画布后,我们为变量$red,$green,$blue,$white 分配了不同的颜色,并进行了泛滥填充,使画布的背景为蓝色。
然后,我们调用imagestring() 函数,帮助我们在画布上书写文字。
- 第一个参数是我们的空白画布,这是我们要写的地方。
- 下面的参数是一个整数,代表文本的字体大小(可用值为1到5)。
- 随后的两个参数代表字符串第一个字母的X和Y坐标。
- 第五个参数是本例中我们要写的字符串。它是
I love PHP。 - 最后一个参数代表文本颜色。
然后用header() 和imagejpeg() 函数在浏览器上显示图像,最后用imagedestroy() 函数销毁图像资源。
上述代码片断的输出如下所示。

结语
祝贺你!你现在已经完成了入门的学习。你现在已经完成了促进你在PHP图形方面进展的必要的介绍性课程。
然而,在PHP图形的应用方面还有其他令人兴奋的东西需要学习,如制作验证码、图片水印等。因此,我鼓励你在这方面多做学习。
在这篇文章中,我们已经学会了如何创建一个画布,墨水和画笔,画一些基本的几何图形,并在画布上写上文字。