PHP图形技术的简介

116 阅读5分钟

PHP图形技术简介

PHP可以用来独立创建和操作图形元素。因此,PHP图形处理的范围和能力是非常强大的。

它借助于GD 库,目前支持jpegpnggifwbmp 中的图片格式。

本教程将为在PHP中创建和操作图形元素的步骤和过程提供坚实的基础。

前提条件

要继续学习本教程,你需要具备以下条件。

  • PHP的基本知识。
  • 一个编辑器,如[Visual Studio Code]。
  • 一个Web服务器,如本地安装的Apache和Nginx。
  • GD library/extension。你可以通过在 文件中搜索 来确认你是否安装了它。你应该找到 ,否则可以在网上免费下载。php.ini gd extension=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 坐标的点开始。

该函数在失败时返回一个布尔值,即真或假。

注意,左上角可以通过设置xy 坐标为零(0)来获得。这将淹没整个画布,而不管其大小如何。

<?php
imagefill($image,$x,$y,$color);
?>

以下是该片段的参数。

  • $image = 一个由任何图像创建函数返回的变量资源,例如: 。imagecreatetruecolor()
  • $x = 这个变量存储一个X坐标的值。
  • $y = 这个变量存储一个Y坐标的值。
  • $ color = 代表使用 函数生成的颜色。imagecolorallocate()

输出你的图像

没有视觉化的艺术是什么?要在浏览器上输出你的图像,你需要两个函数,它们是。

  1. header() 函数。
  2. 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() 函数对我们已经创建的空白画布进行了泛滥填充。
  • 然后,我们使用headerimagejpeg 函数的组合,在浏览器上以jpeg 格式显示我们的图像。
  • 最后,我们销毁了存储为$image 的资源。

输出。

Demo-output

绘制几何图形

让我们通过绘制一些几何图形来使我们的技能更上一层楼。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() 函数将其销毁。

输出。

image-rectangle

在上面的例子中,我们在我们创建的具有蓝色背景的图像上画了一个红色边框的矩形。

如何画一个多边形

我们使用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() 函数显示输出,最后销毁资源。

运行上述代码后,预计你会得到类似这样的输出。

image-polygon

如何在画布上书写文字

它们是由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() 函数销毁图像资源。

上述代码片断的输出如下所示。

image-text

结语

祝贺你!你现在已经完成了入门的学习。你现在已经完成了促进你在PHP图形方面进展的必要的介绍性课程。

然而,在PHP图形的应用方面还有其他令人兴奋的东西需要学习,如制作验证码、图片水印等。因此,我鼓励你在这方面多做学习。

在这篇文章中,我们已经学会了如何创建一个画布,墨水和画笔,画一些基本的几何图形,并在画布上写上文字。