1.GD2
1.1 GD2 是甚么?
PHP 除能处置文档统计数据外,透过两个叫 的 PHP 扩充库,PHP 还能静态聚合相同文件格式影像或是对已近相片展开研磨处置。
库(也能称作 GD2 C#)是两个开源的用作建立图象的C#,该C#由 C 词汇撰写,能在 Perl,PHP 等世界语中采用。 复本提供更多了一连串用以处置相片的 API(USB),采用 GD 库能处置相片、聚合相片,也能给相片加盐印等。
1.2 采用 GD2 库能做甚么
在 PHP 中采用 GD 库能在网页中绘出各式各样图象,和为萤,假如与 Ajax 崇天还能制做出各式各样强悍的静态图象。除了是在中文网站进占网页中使用的接收者,也能采用 GD 程序库同时实现。
1.3 GD2 库读取
相同版的 PHP,它命令行中有关 GD 库的实用性项也能有所相同,比如说在 php7.2 及后的版中 GD 库的实用性项就变为了“extension=gd2”
有下列三种形式能证实
(1)php.ini
(2)
(3) gd_info()表达式
2.常见影像处置
在 PHP 中,透过 GD 库处置影像的操作,都是处置,操作完成以后再以的形式,输出到或保存在的磁盘中。建立影像一般分为 4 个基本步骤。
建立画布:所有的绘图设计都需要在两个上完成,而,用作存储影像的信息。以后的影像操作都将基于这个背景画布,该画布的管理就类似于我们在画画时采用的画布。
绘出影像:画布建立完成以后,就能透过这个画布资源,采用各式各样画像表达式设置影像的颜色、填充画布、画点、线段、各式各样几何图形,和向影像中添加文档等。
输出影像:完成整个影像的绘出以后,需要将影像以某种格式保存到服务器指定的文件中,或将影像直接输出到浏览器上显示给用户。在影像输出之前,一定要采用 header() 表达式发送 Content-type 通知浏览器,这次发送的是相片不是文档。
释放资源:影像被输出以后,画布中的内容也不再有用。出于节约系统资源的考虑,需要及时清除画布占用的所有内存资源。
2.1 建立画布
通常采用 和 来建立指定的画布,它的语法文件格式如下所示:
该表达式新建两个基于的影像,imagecreate() 返回两个影像标识符,代表了一幅大小为 x_size 和 y_size 的。
该表达式新建两个真彩色影像, 返回两个影像标识符,代表了一幅大小为 和 的。
以上两个表达式都能建立一张画布,而且成功后都会返回两个资源句柄,失败则返回 FALSE。相同的是它能容纳的色彩范围相同,imagecreate() 建立两个基于普通调色板的影像,通常支持色;而 imagecreatetruecolor() 能建立两个影像。
除采用上面两个表达式能建立画布外,还能采用下表中的表达式,透过文件或 URL 建立两个新影像。
2.2 定义颜色
在采用 PHP 静态输出漂亮影像的同时,也离不开颜色的设置,就像画画时需要采用调色板一样。在 PHP 中提供更多了 imagecolorallocate() 和 imagecolorallocatealpha() 两个表达式来设置影像的颜色
(1)imagecolorallocate() 表达式
该表达式能为两个影像资源分配颜色,假如在影像中需要设置多种颜色,只要多次调用该表达式即可。
提示:假如是采用 imagecreate() 表达式建立的影像资源,在第一次调用 imagecolorallocate() 表达式时会默认为其填充背景色。
(2)imagecolorallocatealpha() 表达式
该表达式的作用和 imagecolorallocate() 相同,但多了两个额外的设置透明度的参数 alpha。
其中 ,其值从 到 。 表示完全不透明, 表示完全透明。
2.3 绘出文字
想要在影像中显示文字也需要画上去。在 PHP 中不仅支持多种的字体库,还提供更多了非常灵活的文字绘出方法。例如,在影像中绘出缩放、倾斜、旋转的文字等。常见的绘出文字的表达式如下表所示:
2.4 输出相片
前面讲解的画布建立,并不能看到画布中的影像是甚么样子的,那么接下来就来看看要怎么查看我们建立的影像。在 PHP 中能采用相同的表达式输出相同文件格式的影像,如下表所示是常见的影像输出表达式。
2.5 释放影像资源
在影像的所有资源采用完毕后,通常需要释放影像处置所占用的内存。在 PHP 中能透过 imagedestroy() 表达式来释放影像资源,其语法文件格式如下所示:
3 应用案例
3.1 聚合接收者
具体的同时实现步骤如下所示:
建立画布;
随机绘出字符;
绘出干扰元素;
输出影像到浏览器;
释放资源。
代码示例:
3.2 为相片添加盐印
将 src_im 影像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 影像中坐标为 dst_x 和 dst_y 的位置上。
4.JpGraph
应用 GD C#能建立各式各样的图形,但是想要制做复杂的为萤形,仅透过 GD 表达式来实则会显得非常繁琐,PHP 从诞生到走向成熟的过程中经过多次变革,在这期间,许多组织和机构都开发了基于 PHP 的框架和类库。JpGraph 图形类库是其中非常实用、流行的代表,不仅功能强悍,而且操作简便。
4.1 JpGraph 类简介
JpGraph 是两个完全采用 PHP 撰写的,基于 GD2 C#的用作建立为萤的类库。JpGraph 在绘出为萤方面不仅功能非常强悍,而且使用方便,只需简单的几行代码就能绘出出非常复杂的为萤效果,从而在很大程度上提高了编程人员的开发效率。
采用 JpGraph 能根据需要绘出任意图形。我们只需要提供更多相关统计数据、标题和表格类型,然后把剩下的事交给 JpGraph 就行。只需掌握为数不多的 JpGraph 内置表达式,就能制做出非常漂亮的图象。
4.2 JpGraph 类安装
需要从官方中文网站 https://jpgraph.net/download/ 下载 JpGraph。这里我们下载的是 JpGraph 4.3.1 版,需要注意的是 JpGraph 4.x 系列支持 PHP5(PHP 5.1.0 或更高版)和 PHP 7(PHP 7.0、7.1 和 7.2)。在下载 JpGraph 时注意选择合适的版展开下载。
JpGraph 需要 GD 库的支持,假如我们想在当前站点中采用 JpGraph 类库的话,只需要将下载下来的 JpGraph 压缩包中的 src 目录复制到当前站点所在目录中,采用时只需要调用 src 目录下的指定文件即可。
假如想要在服务器上的所有站点中采用 JpGraph,能执行如下步骤来安装 JpGraph 类库:
将压缩包下的全部文件解压到两个文件夹中,例如“D:\www”;
打开 PHP 的安装目录,找到并打开 php.ini 文件,然后修改其中的 include_path 参数,在其后增加上一步解压出来的文件夹名,例如“include_path = “.;D:\www””;
重新启动 Apache 服务器即可生效
4.3 JpGraph 实用性
JpGraph 提供更多了几个专门用作实用性 JpGraph 类库的文件,例如 jpg-config.inc.php、jpgraph_ttf.inc.php 等等,在采用 JpGraph 前,能透过修改文档文件来完成 JpGraph 的实用性。
中文字体实用性
JpGraph 支持的中文标准字体能透过修改 CHINESE_TTF_FONT 的设置来完成,能在命令行 jpgraph_ttf.inc.php 中找到该实用性项。
默认相片文件格式实用性
根据当前 PHP 环境中支持的相片文件格式来设置默认的聚合相片的文件格式。JpGraph 默认相片文件格式的实用性能透过修改命令行 jpg-config.inc.php 中的 DEFAULT_GFORMAT 项来完成。默认值 auto 表示 JpGraph 将依次按照 PNG、GIF 和 JPEG 的顺序来检索系统支持的相片文件格式。
4.4 采用 JpGraph 建立影像
在介绍完 JpGraph 的安装实用性后,就能采用 JpGraph 来建立影像了。为了更好的采用 JpGraph,首先我们来了解一下采用 JpGraph 撰写聚合影像的代码时通常需要哪些步骤。
1) 包含所需要的类库文件
首先我们需要采用 require_once() 或是 include_once() 等表达式将我们需要采用的类库文件引入到当前的代码中。例如:
2) 初始化统计数据
引入需要的文件后,接下来就能初始化图象中需要的统计数据了,如下所示:
这些统计数据能是 PHP 程序中固定的统计数据;也能是存储在统计数据库或是文档文件中的统计数据;还能是透过 URL 参数传递的统计数据。
3) 建立 Graph 类实例
有了所需的统计数据,接下来就需要来建立 Graph 类的实例了,我们能通过建立实例的过程来设置聚合影像的尺寸,如下所示:
4) 设置标题及其字体、颜色、位置
JpGraph 中提供更多了很多能设置的参数,以便我们能制做成多种多样的影像,例如下面这些:
5) 建立对应的影像实例
设置好图标的各个参数后,就能建立指定图标的实例了,能是折线图、柱形图、饼状图,3D 饼状图等,如下所示:
6) 将统计数据添加到影像上
7) 显示影像
至此两个简单的图形就完成了。
注意:
JpGraph 会默认将汉字编码认定为 GB2312,并将之转化为 UTF-8 文件格式后再显示。所以假如文件的编码文件格式为 GB2312,只需将 SetFont() 方法的第两个参数设置为 FF_SIMSUN 即可,假如是 UTF-8 编码,则需要把汉字编码转化为 GB2312,这样汉字才能正常显示,转换编码形式能采用
4.5 应用案例