一、安装前说明。
我的安装环境是,windows +phpstudy
首先我们要理解GD库和Jpgraph库之间的关系。
GD是默认安装在php下的图形库。(phpstudy默认是开启的)
而Jpgraph库是基于GD库的,它需要在Jpgraph官网上自行下载(这个很快)。
所以我们首先需要在php中开启 GD库的使用,然后安装并配置Jpgraph(我的jpgraphj是4.2.2版本,php是5.6.27-nts+apache)。
二,开启GD库。
首先,打开php.ini(windows下应该在你的安装目录根目录下)。
找到 entension_dir, 注释掉前面的 ; , 将你的 ext (扩展文件夹目录) 路径写在后面。(在你的phpstudy的php 5.6.27-nts下面找到ext文件目录 D:\phpStudy\php\php-5.6.27-nts\ext)
重启一行,写上extension_dir=“D:\phpStudy\php\php-5.6.27-nts\ext”
这样做的目的: 让php知道去哪里找那些扩展文件(windows下是一堆.dll)
然后, 还要开启 gd库, 同样, 在php.ini. 中,找到 php_gd2.dll, 将前面的注释; 去掉, 也就是开启了gd2的使用。
这样在刚刚那个ext文件下的 一个 php_gd2.dll 文件就能够被使用了。
(同理, 开启其他功能的使用也是这样操作的)
这里,为什么是gd2呢, 因为在php5 之后,就把gd给删掉了,也就是说 gd2 包含了 原本的gd, 所以不要有怀疑。
这时候你测试一下:
<?php var_dump(gd_info()); ?>如果出现,gd的信息,说明,gd启动成功。
但是很有可能你在画很多网上的例子的时候还是显示不出来,
这是因为缓存问题,你需要在输出图形之前加上
ob_clean();清除缓存。
三,jpgraph库
至于jpgraph的配置其实很简单,把jpgraph的src里面的所有文件放在php里面(或者其他位置也行),
然后在php.ini 中找到 include_path, 写上你的文件目录。
这里要注意一个问题,
如果你的include_path 如图:
重启一行,写上include_path=".;D:\phpStudy\WWW\xuexiphp;"
那么你在引用的时候,必须是从includes下一级开始写文件路径,知道需要的php文件。
如,
那么说明, xuexiphp下面就是 jpgraph, 然后jpgraph中有那两个php。
为什么我要特意说一下这个呢,因为一开始我的include_path 写的是 D:\phpStudy\WWW\xuexiphp\jpgraph;. 然后就会引用出错。
这是个细节。
还有一小点: 要让php.ini 生效,服务器必须要重启的。
四,最后, 解决中文乱码的问题
第一种方法:将SetFont函数第一个参数设置为FF_SIMSUN,将jpgraph_ttf.inc.php中修改为
elseif( $aFF === FF_SIMSUN ) {
// Do Chinese conversion 注释掉
// if( $this->g2312 == null ) { 注释掉
// include_once 'jpgraph_gb2312.php' ; 注释掉
// $this->g2312 = new GB2312toUTF8(); 注释掉
// } 注释掉
//return $this->g2312->gb2utf8($aTxt); 注释掉,下面重写个返回
return $aTxt;
}
我用的是第一种方法
第二种方法:将SetFont函数第一个参数设置为FF_SIMSUN;不修改jpgraph_ttf.inc.php中的内容,则使用函数将utf8转换为gb2312
$bt="这是统计表";
$b=iconv("UTF-8","gb2312",$bt);
$graph->title->Set("$b");
$xz="x轴";
$x=iconv("UTF-8","gb2312",$xz);
$graph->xaxis->title->Set("$x");
$graph->yaxis->title->Set("Y-title");
$graph->title->SetFont(FF_SIMSUN,FS_BOLD);
$graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD);
$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD);
五,实例验收
<?php
header("content-type:image/jpeg"); //定义输出图像的类型
$im=imagecreatefromjpeg("./image/1265521666.jpg");//重点这里面的照片文件一定要是image文件夹,不然要出错,或是不要文件夹直接图片
$textcolor=imagecolorallocate($im,56,73,136); //设置字体颜色
$fnt="c:/windows/fonts/simhei.ttf";
$motto="长白山"; //定义输出字符串 UTF-8编码字体
imageTTFText($im,50,50,150,150,$textcolor,$fnt,$motto); //写入到图片中
imagegif($im); //建立gif图形
imageDestroy($im); //结束图形,释放内存空间
?>