0

0

jpgraph中文使用手册:使用jpgraph生成图片概念介绍

php中文网

php中文网

发布时间:2016-06-21 08:53:45

|

1927人浏览过

|

来源于php中文网

原创

  在介绍完php jpgraph安装配置教程以及第一个jpgraph实例教程后,为了更好的使用jpgraph,我们需要整理思路,了解一下使用php jpgraph编写生成图片代码时通常需要哪些步骤?用命令行是否可以生成图片?html标签如何来调用图像生成脚本?如何将图像写入文件?这些问题正是本教程需要解答的。即使你熟悉php也强烈建议你快速游览本教程以了解相关概念。

  使用命令行生成动态图片

  jpgraph类库可以直接使用PHP命令行方式来生成图片。其和游览器生成图片是类似的工作方式。生成的图片数据为二进制。

  这种方式是一种使网站在固定时间间隔内高效、自动创建图片的有效方法。这会避免访问者访问网站时每次重新生成图片以增加服务器负担。

  需要确保你的PHP命令行版本是cli版本。使用CGI/ISAPI版本的PHP由于会产生HTTP header而不能工作。

  jpgraph使用提示:如果使用的是CGI版本,可以通过添加-q选项来抑制HTTP header的产生。推荐:PHP命令行参数使用与说明教程

  你可以在命令行方式下通过

1

百度AI搜
百度AI搜

百度全新AI搜索引擎

下载

php --version

命令来查看你的PHP命令行版本是否为cli。然后,通过

1

php myimage.php > image.png

命令来生成图片,文件扩展名必须与生成的图片格式匹配。

  如何使用jpgraph类库生成图片

  在WEB页面上创建和使用图片共同的步骤主要有

  1、创建一个脚本,其涵盖如下内容:通过获得数据并指定图片应如何构建、图形大小多少、使用什么颜色和字体并在图形上扩充其他东西

  2、在应该显示图形的HTML页面上需要增加一个或多个img标签来连接PHP图像程序。当然,也完全可以通过在游览器中直接调用这些图像程序来显示。使用img标签这种方法可以在WEB页面上包含任何数量的图像。

  需要注意的是通过正常的HTTP GET/POST方式可以传递参数给图像程序。比如

1

@@##@@

  这段代码可能是用来控制图像外观或传递数据到图片中应该显示的地方。注意,这可能不是最好的发送数据进行图形绘制的方法。对于有大量数据要求的图像,可以通过从数据库中获取图像脚本所需要的所有数据

  使用jpgraph创建图形的标准步骤详解

  当你准备使用php jpgraph类库创建你的PHP图形脚本时,一般有以下几个步骤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19


// 包含必要的类库文件
require_once 'jpgraph.php';
require_once '....';
 
// 创建Graph类实例
$graph = new Graph($width,$height, ...);
 
// 设定尺度类型
$graph->SetScale('...');
 
// 构建图形的细节和图形模型对象
 
// 将一个或多个图形模型对象添加到图形上
$graph->Add(..);
 
// 将图形送至游览器显示
$graph->Stroke();
?>

  jpgraph是完全面向对象的,所以所有调用都是针对类的具体实例的。其中的基础类就是Graph,其代表整个图表。

  在创建了Graph对象后,所有代码的添加都是为了构造图的细节。脚本中最后调用的方法Graph::Stroke()是为了将已构造好的图发送到游览器上。如果图表支持CSIM,则此方法需要修改为Graph::StrokeCSIM()

  除了这些标准用法外,你也可以选择

  1、直接将图表发送到文件中。这是通过指定一个文件名作为参数传递到调用的Stroke()方法中

  2、访问GD图片处理程序

  3、使用内置的缓存系统将之前生成的图片送出。注意:缓存系统默认是禁止的,你需要在jpg-config.inc中进行适当的设置以启用缓存系统。

  4、使用MGraph()类在同一个图片中结合几个图形。

  jpgraph图像压缩格式的选择

  jpgraph类库默认是以PNG、JPEG、GIF的顺序自动选择图片格式的。哪种可用取决于安装jpgraph类库的系统。

  有两种方法可以改变图片格式

  1、改变jpgraph配置文件jpg-config.inc.php中定义的默认图像格式,即

1

DEFINE('DEFAULT_GFORMAT','auto')

  如果你希望你所有的图片都是以JPG编码格式产生,你需要将其修改为

1

DEFINE('DEFAULT_GFORMAT','jpg')

  2、在脚本中动态选择希望压缩的格式,主要通过调用Image::SetImgFormat()方法实现,比如你希望使用JPEG格式发送图片至游览器

1
2
3


$graph->img->SetImgFormat('jpeg')
?>

  几乎所有的图表程序,最后一行都是$graph->Stroke();

  这一行开始实际的图表创作。所有方法调用到这个阶段已经设置类库场景并指定所有必要的参数(感觉类似于photoshop的场景)。当你调用Stroke()方法时开始构建图片。假设当图片生成时没有发现任何错误,则原则上按照以下步骤

  1、开始在内存中建立图片。这是通过分析指定的参数以及提供的数据来创建各种已指定的图形模式。

  2、检查需要发送什么header,比如图形使用哪种图像压缩格式,然后将header发送到客户端。

  3、发送实际的图片数据至客户端

  图片直接写入文件说明

  除了将图片文件流送至游览器外,也可以直接将图片写入命名的文件中。文件名必须以参数形式传递给Graph::Stroke()方法,即

1
2
3


$graph->Stroke('/tmp/myimage.png');
?>

  有三点需要注意

  1、PHP程序必须有你试图写入文件的目录的写入权限。如果你通过游览器运行PHP。那意味着HTTP服务器必须具有在该目录写入的权限。

  2、文件的扩展名必须与指定的图像压缩格式匹配。

  3、如果图片直接传输至文件,而没有送至游览器,脚本可以返回普通文本。

  将图片写入文件同时返回到游览器中的实例说明

  在这个jpgraph实例中,正常应该使用jpgraph类库2.5版本中的Graph::StrokeStore($aFileName)方法来替代。如果你使用的是之前的版本,由于各种原因无法升级更新,可以使用下面的绝招来实现,即使用_IMG_HANDLER选项来强迫Graph::Stroke()方法返回图像句柄(handler)并停止。然后人工首先将图像发送至选定的文件,其次将文件流使用类库中的内部方法送至游览器。即

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18


 //包含必要的类库文件
 
$graph = new Graph(400,300);
 
// 编写生成图片的代码
 
// 通过_IMG_HANDLER参数阻止图片送至游览器
$gdImgHandler = $graph->Stroke(_IMG_HANDLER);
 
// 默认的图片文件格式为PNG,并将图片传输至指定的文件中
$fileName = "/tmp/imagefile.png";
$graph->img->Stream($fileName);
 
//然后将图片送至游览器
$graph->img->Headers();
$graph->img->Stream();
?>

  Stroke函数特别说明

  除了文件名参数外,有两个预定义的参数可以在此函数中使用

  _IMG_AUTO:将会在脚本目录下创建一个与脚本名称相同的文件,扩展名是已配置的图片扩展名。

  _IMG_HANDLER:指定该文件名不创建图片也不返回到游览器中。相反,它会只是Stroke()方法返回GD句柄。如果你想之后在不支持jpgraph类库的地方操作图片这是很有用的。比如在一个动态生成的PDF文件中包含一个图片。

  强制游览器更新你的图片的方法

  一些游览器中也许不会返回一个请求至HTTP服务器除非用户刷新。由于脚本文件的时间戳不改变可能会导致用户一直看到老数据,可以通过

1

@@##@@

实现,由于游览器缓存问题也会出现这种情况,所以同样可以使用这种方法强制游览器更新图片。

  生成图片的打印问题说明

  有些浏览器,最显着的IE浏览器,有一个动态的图像打印的问题。这是因为IE的设计者假设所有图片是传统的静态图像文件的图像,并不会动态生成,这会有一些影响到打印。

  1、IE准备打印时通常总是会重新获取页面。这意味着会产生一个新的图片,如果数据瞬息万变,也许用户会认为图片有差别。

  2、有些老版本的IE游览器根本不打印动态图像,唯一的办法是确保使用静态图像

  最后一个问题需要注意,通常情况下大多数游览器都支持右键点击并下载图片至本地。然而,使用动态图像,有些老版本的IE可能会非常混乱,比如试图下载一个PNG图像,保存时变成了BMP文件保存。

  当然新版本的IE游览器似乎已能够很好的处理动态图像了。

  OK,使用jpgraph生成图片的详细步骤以及如何使用命令行方式生成图片、如何使用jpgraph将生成的图片写入文件、如何使用HTML标签调用jpgraph脚本的教程就介绍完了。

  :PHP网站开发教程-leapsoul.cn版权所有,转载时请以链接形式注明原始出处及本声明,谢谢。



jpgraph中文使用手册:使用jpgraph生成图片概念介绍jpgraph中文使用手册:使用jpgraph生成图片概念介绍

相关标签:

php

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

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

797

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

272

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

144

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

25

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

92

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

53

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

717

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

64

2026.02.12

热门下载

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

精品课程

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

共137课时 | 12.2万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

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

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