热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用PHP和GD进行图形处理

因为越来越多的web站点开始结合数据库在他们的部分设计中,我们能够使用在数据库中采集的数据来显示统计结果。今天有很多的web站点都有意使用某些民意测验或投票应用。在表格中显示数据是一件事,但是创建一个数据的图形则就是另外一回事了。当然,我们可以
因为越来越多的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); 



?> 



  这就是我们得到的
 



 



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



 
(未完待续
推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 解决Linux系统中pygraphviz安装问题
    本文探讨了在Linux环境下安装pygraphviz时遇到的常见问题,并提供了详细的解决方案和最佳实践。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
author-avatar
梦幻00草根_831
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有