0

0

使用PHP和GD进行图形处理_PHP

php中文网

php中文网

发布时间:2016-06-01 12:35:16

|

1247人浏览过

|

来源于php中文网

原创

因为越来越多的web 站点开始结合数据库在他们的部分设计中我们能够使用在数据库中采集的数据来 

显示统计结果。今天有很多的web 站点都有意使用某些民意测验或投票应用。在表格中显示数据是一件事
 

但是 创建一个数据的图形则就是另外一回事了。当然
我们可以使用表格将可用的条状图形接在一起显示 

但是对于线形图或饼状图又如何做呢
PHP 具有一系列的图形函数这些函数允许我们创建图形让我们看 

一看这些函数对于使用和创建一些图形有什么好处。 



  然而要紧记
在PHP中的图形函数要求你的系统安装了GD图形库。你可以在www.boutell.com/gd/找到 

还可以得到一些关于在你的系统上如何安装的一些指导。 



  注意
我写这篇文章时是在Red Hat Linux 6.2机器上然后是在Windows 2000机器上结束它的 。在Red

Hat我运行的是PHP和MySQL的最新版本
但是在Windows上我不得不回到MySQL 3.21.29和PHP 3.0.11版本上 

因为它有我要处理的所有的东西
-- SQL和PHP的运行都不需要作修改。在这里让我们不要将整个事情放在交 

叉平台上
好吗 



  为了保持数据简单
并且允许我们集中注意力在创建图形上我使用了一个小的假定的数据集 -- 一个 

国际公司今年前六个月的销售指标。我根据的是一个办事处位于伦敦和另一个在亚特兰大。 





         Month 1  Month 2  Month 3  Month 4  Month 5  Month 6

伦敦      325      345      400      390      370      320

亚特兰大  300      280      270      300      350      410

前六个月的销售指标



  然后我将数据输入到一个MySQL数据库中。我在下面包括了一个数据的卸出
 



# MySQL dump 7.1

#

# Host: localhost    Database: graphing

#--------------------------------------------------------

# Server version    3.22.32



#

# Table structure for table 'sales'

#

CREATE TABLE sales (

g_id int(11) DEFAULT '0' NOT NULL auto_increment,

g_month tinyint(4) DEFAULT '0' NOT NULL,

g_team tinytext NOT NULL,

g_num int(11) DEFAULT '0' NOT NULL,

PRIMARY KEY (g_id)

);



#

# Dumping data for table 'sales'

#



INSERT INTO sales VALUES (1,1,'London',325);

INSERT INTO sales VALUES (2,1,'Atlanta',300);

INSERT INTO sales VALUES (3,2,'London',345);

INSERT INTO sales VALUES (4,2,'Atlanta',280);

INSERT INTO sales VALUES (5,3,'London',400);

INSERT INTO sales VALUES (6,3,'Atlanta',270);

INSERT INTO sales VALUES (7,4,'London',390);

INSERT INTO sales VALUES (8,4,'Atlanta',300);

INSERT INTO sales VALUES (9,5,'London',370);

INSERT INTO sales VALUES (10,5,'Atlanta',350);

INSERT INTO sales VALUES (11,6,'London',320);

INSERT INTO sales VALUES (12,6,'Atlanta',410);



  我的数据库叫做graphing,包含数据的表叫做sales。我将月份当做一个整数存在 g_month字段中。 



  在我们开始绘图之前,先学一些基础知识,看一下PHP是如何创建一个图像。我们需要做的第一件事就 

是告诉浏览器它正在得到一个图像和所得到图像的类型: 






Header( "Content-type: image/gif"); 



?> 



  即然浏览器知道它正在获取一个GIF 图像了
我们可以开始创建图形了。首先我们需要创建一个将用来 

绘图的空白的画布。ImageCreate函数可以做到这一点。ImageCreate将返回一个图像的标识符
并且需要告 

诉函数用象素计算的画布有多大
x(宽度)与y(高度)。 






$image
= imagecreate(200,200); 



?> 



  现在我们得到了一个200像素乘200像素的可用来绘图的空白画布。下一步是创建将要用在图像中的一些 

颜色。为了做到这一点我们需要使用ImageColorAllocate函数
还有颜色的RGB值。ImageColorAllocate 将 

返回一个我们刚创建的颜色标识。我们将在画布上绘图时使用颜色标识。ImageColorAllocate的工作方式是 

我们需要为所处理的每一个图像分配一个颜色
-- 所以如果我们创建3个GIF并且在每一个上面使用红色我 

们应该分配红色3次
一次为一个GIF。我将分配一个名为$maroon的颜色给定红色值为100绿色为0 和 

兰色为0。同时我将同样创建白色。 






$maroon
= ImageColorAllocate($image,100,0,0); 

$white
= ImageColorAllocate($image,255,255,255); 



?> 



  即然我们已经得到了颜色
就可以画点什么了。第一件事情要叫的就是将画布白色涂成白色。函数

ImageFilledRectangle将在画布上画一个矩形
并且用指定的颜色进行填充。 






    ImageFilledRectangle
($image,0,0,200,200,$white); 



?> 



  告诉ImageFilledRectangle的第一件事就是
同样用于所有的图像函数哪一个图像是我们正在处理的

所以传给它$image标识。然后它需要知道x和y坐标来开始画矩形
0,0 -- 左上角和结束矩形的坐标 200,

200
-- 画布的右下角。最后告诉它的事情就是在矩形内填充的颜色这个例子为$maroon。现在我们可以 

开始在白色背景上绘图了。 






ImageRectangle
($image,10,10,190,190,$maroon); 

ImageFilledRectangle
($image,50,50,150,150,$maroon); 



?> 



  ImageRectangle工作完全与ImageFilledRectangle同样的方式
除了它不使用颜色填充矩形以外。一旦 

我们画完了
就可以输出图形了 -- 






ImageGIF
($image); 



?> 



  然后清除我们存在内存中的图像。 






ImageDestroy
($image); 



?> 



  这就是我们得到的
 



 



  然而
它还不是一个要求的图形。 



 
(未完待续

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python 序列化
Python 序列化

本专题整合了python序列化、反序列化相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.02.02

AO3官网入口与中文阅读设置 AO3网页版使用与访问
AO3官网入口与中文阅读设置 AO3网页版使用与访问

本专题围绕 Archive of Our Own(AO3)官网入口展开,系统整理 AO3 最新可用官网地址、网页版访问方式、正确打开链接的方法,并详细讲解 AO3 中文界面设置、阅读语言切换及基础使用流程,帮助用户稳定访问 AO3 官网,高效完成中文阅读与作品浏览。

91

2026.02.02

主流快递单号查询入口 实时物流进度一站式追踪专题
主流快递单号查询入口 实时物流进度一站式追踪专题

本专题聚合极兔快递、京东快递、中通快递、圆通快递、韵达快递等主流物流平台的单号查询与运单追踪内容,重点解决单号查询、手机号查物流、官网入口直达、包裹进度实时追踪等高频问题,帮助用户快速获取最新物流状态,提升查件效率与使用体验。

27

2026.02.02

Golang WebAssembly(WASM)开发入门
Golang WebAssembly(WASM)开发入门

本专题系统讲解 Golang 在 WebAssembly(WASM)开发中的实践方法,涵盖 WASM 基础原理、Go 编译到 WASM 的流程、与 JavaScript 的交互方式、性能与体积优化,以及典型应用场景(如前端计算、跨平台模块)。帮助开发者掌握 Go 在新一代 Web 技术栈中的应用能力。

11

2026.02.02

PHP Swoole 高性能服务开发
PHP Swoole 高性能服务开发

本专题聚焦 PHP Swoole 扩展在高性能服务端开发中的应用,系统讲解协程模型、异步IO、TCP/HTTP/WebSocket服务器、进程与任务管理、常驻内存架构设计。通过实战案例,帮助开发者掌握 使用 PHP 构建高并发、低延迟服务端应用的工程化能力。

5

2026.02.02

Java JNI 与本地代码交互实战
Java JNI 与本地代码交互实战

本专题系统讲解 Java 通过 JNI 调用 C/C++ 本地代码的核心机制,涵盖 JNI 基本原理、数据类型映射、内存管理、异常处理、性能优化策略以及典型应用场景(如高性能计算、底层库封装)。通过实战示例,帮助开发者掌握 Java 与本地代码混合开发的完整流程。

5

2026.02.02

go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

62

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

55

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

27

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
R 教程
R 教程

共45课时 | 6万人学习

MongoDB 教程
MongoDB 教程

共17课时 | 2.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号