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音乐生成工具

下载

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不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Golang处理数据库错误教程合集
Golang处理数据库错误教程合集

本专题整合了Golang数据库错误处理方法、技巧、管理策略相关内容,阅读专题下面的文章了解更多详细内容。

98

2026.02.06

java多线程方法汇总
java多线程方法汇总

本专题整合了java多线程面试题、实现函数、执行并发相关内容,阅读专题下面的文章了解更多详细内容。

45

2026.02.06

1688阿里巴巴货源平台入口与批发采购指南
1688阿里巴巴货源平台入口与批发采购指南

本专题整理了1688阿里巴巴批发进货平台的最新入口地址与在线采购指南,帮助用户快速找到官方网站入口,了解如何进行批发采购、货源选择以及厂家直销等功能,提升采购效率与平台使用体验。

643

2026.02.06

快手网页版入口与电脑端使用指南 快手官方短视频观看入口
快手网页版入口与电脑端使用指南 快手官方短视频观看入口

本专题汇总了快手网页版的最新入口地址和电脑版使用方法,详细提供快手官网直接访问链接、网页端操作教程,以及如何无需下载安装直接观看短视频的方式,帮助用户轻松浏览和观看快手短视频内容。

358

2026.02.06

C# 多线程与异步编程
C# 多线程与异步编程

本专题深入讲解 C# 中多线程与异步编程的核心概念与实战技巧,包括线程池管理、Task 类的使用、async/await 异步编程模式、并发控制与线程同步、死锁与竞态条件的解决方案。通过实际项目,帮助开发者掌握 如何在 C# 中构建高并发、低延迟的异步系统,提升应用性能和响应速度。

46

2026.02.06

Python 微服务架构与 FastAPI 框架
Python 微服务架构与 FastAPI 框架

本专题系统讲解 Python 微服务架构设计与 FastAPI 框架应用,涵盖 FastAPI 的快速开发、路由与依赖注入、数据模型验证、API 文档自动生成、OAuth2 与 JWT 身份验证、异步支持、部署与扩展等。通过实际案例,帮助学习者掌握 使用 FastAPI 构建高效、可扩展的微服务应用,提高服务响应速度与系统可维护性。

30

2026.02.06

JavaScript 异步编程与事件驱动架构
JavaScript 异步编程与事件驱动架构

本专题深入讲解 JavaScript 异步编程与事件驱动架构,涵盖 Promise、async/await、事件循环机制、回调函数、任务队列与微任务队列、以及如何设计高效的异步应用架构。通过多个实际示例,帮助开发者掌握 如何处理复杂异步操作,并利用事件驱动设计模式构建高效、响应式应用。

34

2026.02.06

java连接字符串方法汇总
java连接字符串方法汇总

本专题整合了java连接字符串教程合集,阅读专题下面的文章了解更多详细操作。

90

2026.02.05

java中fail含义
java中fail含义

本专题整合了java中fail的含义、作用相关内容,阅读专题下面的文章了解更多详细内容。

35

2026.02.05

热门下载

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

精品课程

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

共137课时 | 11.3万人学习

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

共6课时 | 11.2万人学习

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

共13课时 | 0.9万人学习

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

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