学习php jpgraph教程
- 格式:doc
- 大小:40.50 KB
- 文档页数:7
PHP图片处理库Grafika详细教程(1):图像基本处理Grafika是一个PHP图像处理库,是基于Imagick和GD,可以用于改变图片大小,剪裁,比较,添加水印等等功能。
还有感知哈希,高级图像过滤,绘制贝塞尔曲线等功能,可谓非常强大。
作者:星空幻颖来源:segmentfault|2016-11-09 18:41收藏分享Grafika是一个PHP图像处理库,是基于Imagick和GD,可以用于改变图片大小,剪裁,比较,添加水印等等功能。
还有感知哈希,高级图像过滤,绘制贝塞尔曲线等功能,可谓非常强大。
由于功能太多,所以分成几篇文章写。
《1、图像基本处理》《2、图像特效处理模块》《3、图像属性处理》《4、图形绘制》优点:∙缩略图的速度非常快,质量非常高∙支持智能剪裁∙很好的支持GIF图片∙5种缩略图模式∙图像对比功能∙图像高级过滤功能∙图像混合∙其他图像处理库支持的API基本都支持安装下载1、直接下载:Grafika的官网、Github地址2、composer:1. composer require kosinix/grafika:dev-master --prefer-dist环境需求1.PHP >= 5.3,当然官方推荐php72.GD库>= 2.0版本3.Imagick最好(不强求)>=3.3.0 ,ImageMagick >= 6.5.3部署下载下来的Grafika目录基本结构像下面这样:不过composer下载下来的多一点儿,你只需要使用kosinix/grafika目录下的东西就好了。
我们在grafika目录下建立一个index.php,之后的操作都在这里。
grafika给我们提供了一个非常好用的autoloader.php位于src目录下。
在index.php中引入它,(说明下,以下示例都需要引入这个autoloader.php文件,我们默认省略),下面就可以直接开发了。
PHP图片处理库Grafika详细教程(4):图形绘制该文章是接着上一篇文章:《PHP极其强大的图片处理库Grafika详细教程(3):图像属性处理》,是grafika教程的一个部分。
作者:星空幻颖来源:segmentfault|2016-11-10 13:55收藏分享该文章是接着上篇文章,《PHP极其强大的图片处理库Grafika详细教程(3):图像属性处理》,是grafika教程的一个部分。
所有的教程目录《1、图像基本处理》《2、图像特效处理模块》《3、图像属性处理》《4、图形绘制》话不多说,我们接着上实例,要看基础描述,和下载信息请看第一篇1、绘制贝塞尔曲线贝塞尔曲线绘制,需要两个端点,一头一尾,还有两个控制点,在之间。
所以,必然最起码4个参数。
加上一个颜色共计5个参数。
从做到右,我们依次解释∙第一个(数组):表示起始点,数组内第一个参数为x,第二个参数为y(下同)∙第二个(数组):控制点1(接近起始点),数组内参数同上∙第三个(数组):控制点2(接近结束点),数组内参数同上∙第四个(数组):结束点,数组内参数同上∙第五个:颜色,可以用十六进制表示,比如:#ff0000绘制贝塞尔曲线有两个方法。
但是大体步骤相同。
1:、打开图片;2、绘图;3、保存或者输出1)、自行选择库,这种方法需要自行判断命名空间中的use也需要注意,比之前多了两个1. use Grafika\Grafika;2. use Grafika\Gd\DrawingObject\CubicBezier as GdCubicBezier;3. use Grafika\Imagick\DrawingObject\CubicBezier as ImagickCubicBezier;4.5. $editor = Grafika::createEditor();6. $editor->open($image , 'yanying-smaller.jpg');7. $editorName = Grafika::detectAvailableEditor();8. if('Imagick'===$editorName){9. $drawingObject = new ImagickCubicBezier(array(42, 180), array(230, 190), array(42, 45), array(300, 43), '#ff0000');10. } else if ('Gd'===$editorName) {11. $drawingObject = new GdCubicBezier(array(42, 180), array(230, 190), array(42, 45), array(300, 43), '#ff0000');12. }13. $editor->draw( $image, $drawingObject );14. $editor->save($image,'333/yanying-CubicBezier-1.jpg');2)、可以让grafika自己去选择当前适合的类这种方法就是简单了许多,我们这次重新设定了参数,并且把线条颜色改为了黑色1. use Grafika\Grafika;2. $editor = Grafika::createEditor();3. $editor->open($image , 'yanying-smaller.jpg');4. $drawingObject = Grafika::createDrawingObject('CubicBezier', array(42, 230), array(230, 237), array(42, 45), array(230, 43), '#000000');5. $editor->draw( $image, $drawingObject );6. $editor->save($image,'333/yanying-CubicBezier-1.jpg');效果不错,以后再搞验证码就简单多了2、绘制椭圆椭圆虽然看着难,但是只要搞清楚确定一个椭圆的几个基本参数就可以了。
PHP图片处理库Grafika详细教程(3):图像属性处理该文章是接着上篇文章,《PHP极其强大的图片处理库Grafika详细教程(2):图像特效处理模块》,由于grafika功能太多,所以分开写了四篇文章。
该文章主要写grafika的图像属性处理功能,共7个方法。
作者:星空幻颖来源:segmentfault|2016-11-10 11:55收藏分享该文章是接着上篇文章,《PHP极其强大的图片处理库Grafika详细教程(2):图像特效处理模块》,由于grafika功能太多,所以分开写,其他的点击这里《1、图像基本处理》《2、图像特效处理模块》《3、图像属性处理》《4、图形绘制》该文章主要写grafika的图像属性处理功能,共7个方法。
1、图片格式化为二进制格式输出该方法的作用是打开一张图片,然后格式化为二进制数据,直接输出到浏览器,而不是传统的src显示图片。
其有一个参数,你可以自定义输出图片的格式,比如png啥的我们这里打开图片,输出为png当然你还是要告诉浏览器你需要输出的类型是图片header('Content-type: image/png');1. use Grafika\Grafika;2. $editor = Grafika::createEditor();3. $editor->open( $image, 'yanying-smaller.jpg' );4. header('Content-type: image/png'); // Tell the browser we're sending a png image5. $image->blob('PNG');2、获取图片当前使用的处理库使用方法可以获取处理当前图片,grafika使用了什么库,是gd还是Imagick 该方法不在editor里面,而是直接在$image里面,没有任何参数1. use Grafika\Grafika;2. $editor = Grafika::createEditor();3. $editor->open( $image, 'yanying-smaller.jpg' );4. $result = $image->getCore();5. var_dump($result); // resource(12, gd)3、获取图片高度我们图片高度为213px1. use Grafika\Grafika;2. $editor = Grafika::createEditor();3. $editor->open( $image, 'yanying-smaller.jpg' );4. $result = $image->getHeight();5. var_dump($result); // int 2134、获取图片宽度我们图片宽度为319px1. use Grafika\Grafika;2. $editor = Grafika::createEditor();3. $editor->open( $image, 'yanying-smaller.jpg' );4. $result = $image->getWidth();5. var_dump($result); // int 3195、获取图片名称图片名称为当前文件名1. use Grafika\Grafika;2. $editor = Grafika::createEditor();3. $editor->open( $image, 'yanying-smaller.jpg' );4. $result = $image->getImageFile();5. var_dump($result); // string 'yanying-smaller.jpg' (length=19)6、获取图片类型这里我们发现是jpg的1. use Grafika\Grafika;2. $editor = Grafika::createEditor();3. $editor->open( $image, 'yanying-smaller.jpg' );4. $result = $image->getType();5. var_dump($result); // string 'JPEG' (length=4)7、判断图片是否是动态图片,比如gif我们这张图片是jpg的,所以不是动态图片,返回值为bool类型,true或者false1. use Grafika\Grafika;2. $editor = Grafika::createEditor();3. $editor->open( $image, 'yanying-smaller.jpg' );4. $result = $image->isAnimated();5. var_dump($result); // boolean false【编辑推荐】1.实战还原PHP加密文件2.PHP之十六个魔术方法详解3.PHP混合Go协程并发4.PHP图片处理库Grafika详细教程(1):图像基本处理5.PHP图片处理库Grafika详细教程(2):图像特效处理模块。
php使⽤Jpgraph创建柱状图展⽰年度收⽀表效果⽰例本⽂实例讲述了php使⽤Jpgraph创建柱状图展⽰年度收⽀表效果。
分享给⼤家供⼤家参考,具体如下:应⽤GD2库可以创建各式各样的图像,但是制作复杂的统计图形,仅通过GD2函数库来实现,则显得⾮常繁琐。
PHP从诞⽣⾛向成熟经历了多次变⾰,在这期间,许多组织机构都开发了PHP的框架和类库。
Jpgraph图形类库就是其中⾮常实⽤、流⾏的代表,不仅功能强⼤,⽽且操作简单。
例如:应⽤Jpgraph创建柱状图展⽰年度收⽀情况。
(1)将Jpgraph类库,⾸相应该,下载该类库的压缩包,下载完毕后解压到项⽬所在⽬录。
配置⽅式有两种,(1)打开PHP的安装⽬录,编辑php.ini⽂件并修改其中的include_path参数,在其后增加⽂件夹名,如include_path = ".;D:\wampserver\www\jpgraph"(2)重启Apache服务器即可⽣效如果只想在本站点使⽤Jpgraph,则直接解压到项⽬的⼯程⽬录下即可。
需要⽤require_once等语句将所有⽂件导⼊到项⽬中。
例如建⽴index.php页⾯<?phprequire_once 'jpgraph/src/jpgraph.php'; //导⼊Jpgraph类库require_once 'jpgraph/src/jpgraph_bar.php'; //导⼊Jpgraph类库的柱状图功能$data = array(80, 73, 89, 43, 56, 76, 89, 96, 93, 30, 98, 78); //设置统计数据$xdata = array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');$graph = new Graph(600, 300); //设置画布⼤⼩$graph->SetScale('textlin'); //设置坐标刻度类型$graph->SetShadow(); //设置画布阴影$graph->img->SetMargin(40, 30, 20, 40); //设置统计图边距$barplot = new BarPlot($data); //实例化BarPlot对象$barplot->SetFillColor('blue'); //设置柱状图前景⾊$barplot->value->Show(); //显⽰$graph->Add($barplot);$graph->title->Set(iconv('utf-8', 'GB2312//IGNORE','***科技有限公司年度收⽀')); //设置标题iconv防⽌中⽂乱码$graph->xaxis->title->Set(iconv('utf-8', 'GB2312//IGNORE','⽉份')); //设置X轴名称$graph->xaxis->SetTickLabels($xdata);//设置x轴标注$graph->yaxis->title->Set(iconv('utf-8', 'GB2312//IGNORE','总⾦额(万元)')); //设置y轴名称$graph->title->SetFont(FF_SIMSUN, FS_BOLD); //设置标题字体$graph->xaxis->title->SetFont(FF_SIMSUN, FS_BOLD); //设置x轴字体$graph->yaxis->title->SetFont(FF_SIMSUN, FS_BOLD); //设置y轴字体$graph->Stroke(); //输出图像运⾏结果为:更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《》希望本⽂所述对⼤家PHP程序设计有所帮助。
PHP图形操作之Jpgraph学习笔记本⽂实例讲述了PHP图形操作之Jpgraph学习笔记。
分享给⼤家供⼤家参考,具体如下:⼀、Jpgraph安装配置下载Jpgraph安装包解压后放置磁盘中,(最好是放在和⽹页⼀起)修改php.ini⽂件:1、内存 memory_limit=X,⾄少为32M2、执⾏时间 max_execution_time=X,对于复杂的图⽚加载时需要较多的时间,根据图⽚的复杂度做相应的修改3、缓存 output_buffering 注释掉缓存,便于调试⼆、使⽤Jpgraph创建图形的基本步骤(必要的)1、包含所需要的类库⽂件复制代码代码如下:require_once();2、初始化数据复制代码代码如下:$data=array();可以是php程序中的固定数据,即静态数据,直接得到可以是存储在⽂本⽂件中的数据可以是存储在数据库中的数据可以是通过URL参数传递的数据( GET 或 POST⽅式)3、创建Graph类实例复制代码代码如下:$graph=new Graph();可以在此设置图形的尺⼨4、设置标题、x轴标题、y轴标题的内容,及其字体、颜⾊、位置等5、创建对应的图实例可以是折线图、柱形图、饼状图,3d等6、将数据添加到图形上复制代码代码如下:$graph->Add();7、显⽰图⽚复制代码代码如下:$graph->Stroke();⾄此⼀个简单的图形就完成了注意:中⽂字体乱码Gpgraph默认显⽰汉字时是把汉字编码认为gb2312,转化为utf-8以后再显⽰,如果⽂件的编码⽅式是gb2312,只需把SetFont()⽅法的第⼀个参数设置为FF_SIMSUN即可如果是utf-8编码的,需要先把汉字编码转化为gb2312,这样汉字才能正常显⽰转换编码⽅式可以使⽤ iconv("UTF-8","gb2312",$x);⼀些常⽤的⽅法:$graph->title->Set('设置图表的标题');$graph->tabtitle->Set('设置图⽚头部⽂字');$graph->xaxis->title->Set("设置X轴的标题");$graph->yaxis->title->Set("设置Y轴的标题");$graph->SetScale('textlin');//设置刻度值类型$graph->img->SetMargin(50,40,40,55);//边框间距(左右上下)$graph->title->SetFont(FF_SIMSUN,FS_BOLD,12);//标题字体$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD,10);$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD,10);$graph->xaxis->SetFont(FF_SIMSUN,FS_BOLD,12);//坐标柱上的字体$graph->yaxis->SetFont(FF_SIMSUN,FS_BOLD,12);$graph->title->SetColor('red'); ///标题颜⾊$graph->xaxis->title->SetColor('red');$graph->yaxis->title->SetColor('red');$graph->xaxis->title->SetMargin(20);//距离坐标轴的距离$graph->yaxis->title->SetMargin(20);//距离Y轴的距离$linepot->SetColor('red');//折线的颜⾊(折线图)$linepot->SetWeight(2);//折线的宽度$linepot->value->SetFormat('%0.1f'); //值的格式化$linepot->value->show(true);//显⽰值$graph->SetBackGroundImage ( );设置背景$graph->SetMarginColor('lightblue');//设置图形颜⾊$graph->SetShadow();//$graph->Set3DPerspecttive(); //设置3d效果图/*倾斜3D效果1、' SKEW3D_UP '2、' SKEW3D_DOWN'3、' SKEW3D_LEFT'4、' SKEW3D_RIGHT'*/$p1->SetTheme('water');//设置样式$p1->SetCenter(0.5,0.55);//设置图形位置$graph->legend->Pos(0.1,0.9);//设置注释⽂字的位置$graph->legend->SetFont(FF_SIMSUN,FS_BOLD,12);//设置注释⽂字的字体希望本⽂所述对⼤家PHP程序设计有所帮助。
PHP图标类库-JpGraph使⽤详解微信平台开发的推⼴⽀持应⽤⾥,为了满⾜⽤户渠道推⼴分析的需要,公众平台提供了⽣成带参数⼆维码的接⼝。
使⽤该接⼝可以获得多个带不同场景值的⼆维码,⽤户扫描后,公众号可以接收到事件推送,借此可以通过统计不同场景扫描的⼆维码的结果来获取商业信息。
为了更形象地展⽰统计结果,可以使⽤php作图,不过这需要掌握复杂抽象的画图函数,这⾥推荐使⽤php的JpGraph图表类库,它使得作图变成了⼀件⾮常简单的事情,你只需从数据库中取出相关数据,定义标题,图表类型,然后的事情就交给JpGraph,只需掌握为数不多的JpGraph内置函数(可以参照JpGraph附带例⼦学习),就可以画出⾮常炫⽬的图表!因为我最近也在做phpcmw微信插件⽤户信息统计这块,所以对JpGraph作了⼀番研究应⽤。
为避免初学者⾛我⾛过的弯路,我把调试记录整理出来,分享给⼤家。
通过本⽂你⾄少可以掌握以下技巧:1、能够使⽤JpGraph画出各式各样的图表2、解决中⽂乱码⼀、开启GD库Jpgraph需要GD库的⽀持,所以在调式JpGraph之前,确保GD库已开启,这很重要,不然后⾯的⼯作就没办法展开了。
GD库在PHP5中是被默认安装的,我们只需开启GD库就可以了。
打开php.ini⽂件,找到“;extension=php_gd2.dll”选项,将其前的分号“;”去掉,如图所⽰然后保存修改后的⽂件并重新启动apache服务器。
可以通过phpinfo()函数来获取GD2函数库的安装信息,验证GD库是否安装成功。
⼆、使⽤⽅法在使⽤JpGraph时,最好弄明⽩你使⽤的是哪⼀个版本,千万不要弄错,不然就会张冠李戴,让你调得头晕⽬眩的。
也不要从⽹上找⼀些⽚断代码来调试,除⾮它是完整的,不然也会让你吃不了兜着⾛的了。
唠叼就到这⾥了,下⾯开始调试。
运⾏环境操作系统 W7代码运⾏环境 apache+php5.3解压下载的jpgraph-3.5.0b1压缩包,会看到⼀些⽬录:src:图表⽣成所依赖的代码包,其⼦⽬录Examples⾥有许多的实例。
在PHP中创建图片在PHP中,我们可以创建图片。
当然这个图片不是我们在作图软件中做的图片,是一些最最基本的图片。
利用这些功能,我们可以:1、做验证码2、所略缩图首先我们来看看,如何做一张图片。
header('Content-Type:image/jpeg');$img=imagecreatetruecolor(300,200);$color=imagecolorallocate($img,255,255,255);imagefill($img,0,0,$color);imagejpeg($img);imagedestroy($img);首先要告诉服务器,我要创建图片了!Header(‘Content-Type:image/jpeg’);然后我们创建一个图片句柄$img=imagecreatetruecolor(300,200);300和200分别代表图片的大小我们创建一个颜色句柄$color=imagecolorallocate($img,255,255,255);给这张图片图上颜色Imagefill($img,0,0,$color);输出这张图片Imagejpeg($img);删除这张图片Imagedestroy($img)通过以上方法,我们就可以输出一张图片了。
但是,谁会傻乎乎的在页面上只输出一张白板图片呢?于是就要做一些有意义的事情了。
如何做一张验证码?做验证码要完成下面这些问题1、产生随机数2、将随机数以图片方式显示产生随机数的方法很简单$num='';for($n=0;$n<4;$n++){$num.=dechex(mt_rand(0,15));}Dechex(),就是将一个数字(0-15)以16进制的方式显示。
$num='';for($n=0;$n<4;$n++){$num.=dechex(mt_rand(0,15));}imagestring($img,5,0,0,$num,$black);通过imagestring(),我们就可以将这个文字再图片上输出了。
学习php jpgraph教程12007-08-15 21:58首先包含进来jpgraph的类库:include ("../jpgraph.php");include("../jpgraph_bar.php");include ("../jpgraph_line.php");设置显示的数据数组;调用类库//设置图像的大小$graph = new Graph(400,200,"auto");$graph->SetScale("textlin");//设置图形的边距$graph->img->SetMargin(40,180,40,40);//设置图形的背景图片,填充方式有:BGIMG_FILLPLOT, BGIMG_FILLFRAME, BGIMG_COPY$graph->SetBackgroundImage("abc.jpg",BGIMG_FILLPLOT); $graph->img->SetAngle(45); //设置图形在图像中的角度//设置背景图片的对比度,must be between -1 <= x <= 1, (0,0)=original image$graph->AdjBackgroundImage(0,0);//设置投影;//$graph->SetShadow();//设置标题$graph->title->Set("test image");//设置标题字体样式$graph->title->SetFont(FF_FONT1,FS_BOLD);//设置标题的边距$graph->title->SetMargin(3);//设置图列的位置$graph->legend->Pos(0.05,0.5,"right","center");//设置图列的投影,颜色$graph->legend->SetShadow('darkgray@0.1'); $graph->legend->SetFillColor('lightblue@0.3');//设置x轴的标记$graph->xaxis->SetTickLabels($label_x);//设置X轴的显示值的角度;$graph->xaxis->SetLabelAngle(30);//设置x轴标题和字体颜色$graph->xaxis->title->Set('Year 2006');$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD); $graph->xaxis->title->SetColor('white');//设置x轴的字体和颜色$graph->xaxis->SetFont(FF_FONT1,FS_BOLD); $graph->xaxis->SetColor('yellow');//设置y轴的字体和颜色$graph->yaxis->SetFont(FF_FONT1,FS_BOLD); $graph->yaxis->SetColor('yellow');//设置是否显示格子。
默认为显示;//$graph->ygrid->Show(false);//设置格子的颜色和粗细。
值越小,格子越粗。
$graph->ygrid->SetColor('yellow@0.5');//设置y轴更优美一些$graph->yaxis->scale->SetGrace(20);学习php jpgraph教程22007-08-15 21:59//设置图列的数据$bplot1 = new BarPlot($datay1);$bplot2 = new BarPlot($datay2);//设置图列的填充颜色$bplot1->SetFillColor('orange@0.4');$bplot2->SetFillColor('brown@0.4');设置值的格式$bplot1->value->SetFormat('%d');//设置图列标签$bplot1->SetLegend('Label 1');$bplot2->SetLegend('Label 2');//设置图列在图中的阴影$bplot1->SetShadow('black@0.4');$bplot2->SetShadow('black@0.4');//生成图列$gbarplot = new GroupBarPlot(array($bplot1,$bplot2)); $gbarplot->SetWidth(0.9);$graph->Add($gbarplot);//生成图形$graph->Stroke();//上面所说的时在生成柱形图,当生成线性图时用下面的方法$p1 = new LinePlot($datay);$p1->mark->SetType(MARK_FILLEDCIRCLE);$p1->mark->SetFillColor("red");$p1->mark->SetWidth(4);$p1->SetColor("blue");$p1->SetCenter();$p1->SetLegend("Triumph Tiger -98");$graph->Add($p1);$p2 = new LinePlot($data2y);$p2->mark->SetType(MARK_STAR);$p2->mark->SetFillColor("red");$p2->mark->SetWidth(4);$p2->SetColor("red");$p2->SetCenter();$p2->SetLegend("New tiger -99");$graph->Add($p2);// Style can also be specified as SetStyle([1|2|3|4]) or// SetStyle("solid"|"dotted"|"dashed"|"lobgdashed")$lineplot->SetStyle("dashed");//设置线的样式$graph->yaxis->scale->SetGrace(20); //设置y轴更优美一些转:学习php jpgraph教程32007-08-15 21:592.柱形图和饼状图举例if($tag == 1){$graph = new Graph(600,400,"auto");$graph->SetScale("textlin");$graph->setMarginColor('lightblue');$graph->SetShadow();$graph->setMargin(30,100,30,60);//设置标题;$graph->title->set("文章分类汇总");$graph->title->SetMargin(3);$graph->title->setfont(FF_SIMSUN,FS_BOLD); $graph->title->setcolor('black@0.5');$graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD); $graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD); $graph->xaxis->SetFont(FF_SIMSUN,FS_NORMAL); $graph->xaxis->SetColor('darkblue','black');$graph->xaxis->SetTickLabels($name);$graph->xaxis->SetLabelAngle(30);$bplot = new BarPlot($article_num);$bplot->SetFillColor("orange");$bplot->value->SetFormat('%d');$bplot->SetShadow('darkgray');$bplot->value->show();$graph->legend->SetFont(FF_SIMSUN,FS_BOLD); $bplot->SetLegend("文章数");$graph->Add($bplot);$graph->Stroke();}else{$graph1 = new PieGraph(600,400,"auto");$graph1->SetScale("textlin");$graph1->SetShadow();$graph1->title->setFont(FF_SIMSUN,FS_BOLD); $graph1->title->set("用户文章饼形图");$graph1->setMargin(30,100,30,60);$p1 = new pieplot3d($article_num);$p1->setAngle(80);$p1->setsize(0.5);$p1->setShadow();$p1->ExplodeSlice(2);$p1->SetCenter(0.4);$graph1->legend->SetFont(FF_SIMSUN,FS_NORMAL); $graph1->legend->setshadow();$p1->SetLegends($name);$graph1->Add($p1);$graph1->Stroke();}?>//生成本地图片$graph->Stroke(“路径/文件名.png”);。