首先确认GD库已启用,通过php -m验证并用imagecreate创建画布,使用imagecolorallocate定义颜色后填充背景,接着根据数据比例用imagefilledrectangle绘制柱状图,为每根柱子设置随机颜色并计算y坐标,然后利用imagettftext和imagestring添加类别标签与数值,最后调用header输出PNG图像并执行imagedestroy释放资源。

如果您希望在网页中动态生成统计图表,但不想依赖第三方JavaScript库,可以使用PHP的GD库直接绘制图像。通过GD库,您可以创建柱状图、饼图、折线图等基本图形。
本文运行环境:MacBook Pro,macOS Sonoma
在开始绘图之前,必须确保PHP环境中已启用GD扩展,因为所有绘图功能都依赖于此库。可以通过函数检查当前环境是否支持GD。
1、打开终端并运行命令 php -m | grep gd,查看GD模块是否已安装。
立即学习“PHP免费学习笔记(深入)”;
2、若未安装,可通过包管理器如Homebrew执行 brew install php-gd 安装扩展。
3、在脚本中添加 if (!extension_loaded('gd')) die('GD扩展未启用'); 确保程序安全执行。
绘图的第一步是创建一个图像资源作为画布,并定义所需的颜色调色板。GD库使用资源句柄管理图像和颜色。
1、使用 imagecreate($width, $height) 函数创建一个真彩色画布,例如 $img = imagecreate(400, 300);。
2、调用 imagecolorallocate($img, R, G, B) 分配颜色,例如背景色可设为白色:$white = imagecolorallocate($img, 255, 255, 255);。
3、使用 imagefill($img, 0, 0, $white) 填充背景色,避免出现黑色默认背景。
柱状图通过矩形高度反映数值大小,需根据数据比例映射到画布坐标系。需要计算每根柱子的位置、宽度和高度。
1、定义数据数组,例如 $data = ['产品A' => 50, '产品B' => 80, '产品C' => 120];。
2、设定柱子宽度为40,间距为60,起始x坐标为50,遍历数据使用 imagefilledrectangle() 绘制实心矩形。
3、Y轴方向从上到下递增,因此矩形的y坐标需用画布高度减去数据对应高度,例如 $y = 250 - ($value / max($data)) * 200;。
4、为每个柱子分配不同颜色,增强可视化效果,使用 imagecolorallocate($img, rand(0,200), rand(0,200), rand(0,200)) 随机生成。
图表需要标注类别名称和数值信息,以便用户理解内容。GD库支持字体渲染,但需注意字体路径问题。
1、使用 imagettftext() 函数绘制TTF字体文本,需指定字体文件路径,例如 '/System/Library/Fonts/Supplemental/Arial.ttf'。
2、在每个柱子下方绘制类别名,X坐标为中心对齐,Y坐标为270,颜色设为深灰色:imagecolorallocate($img, 50, 50, 50)。
3、在柱子顶部显示具体数值,调用 imagestring($img, 2, $x + 10, $y - 15, $value, $black) 使用内置字体输出数字。
完成绘图后,需将图像发送至浏览器或保存为文件,同时释放内存中的图像资源以避免泄漏。
1、设置HTTP头信息通知浏览器返回的是PNG图像:header('Content-Type: image/png');。
2、调用 imagepng($img) 将图像输出到浏览器,或传入文件路径保存到磁盘。
3、最后必须执行 imagedestroy($img) 销毁图像资源,结束GD操作流程。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号