php使用GD2绘制几何图形示例

 更新时间:2017年7月6日 23:49  点击:1816
小编给大家推荐的这篇文章介绍了php使用GD2绘制几何图形示例,非常实用,有兴趣的同学快来看看吧。

使用GD2函数不仅可以绘制线条图形,而且可以绘制填充图形,如填充圆形,填充矩形等。下面对GD2中常用的填充图形的绘制方法进行介绍。

bool imagefill( resource image, int x, int y, int color )

imagefill()函数在image图像的坐标( x, y ) (图像的左上角为(0,0))处用color颜色执行区域填充(即与(x,y)点颜色相同切相邻的点都会被填充)。

bool imagefilledarc ( resource image , int cx , int cy , int w , int h , int s , int e , int color , int style )

imagefilledarc() 在 image 所代表的图像中以 cx,cy(图像左上角为 0, 0)画一椭圆弧。成功时返回 TRUE,  或者在失败时返回 FALSE.w 和 h 分别指定了椭圆的宽和高,s 和 e 参数以角度指定了起始和结束点。style  可以是下列值按位或(OR)后的值:

IMG_ARC_PIE
IMG_ARC_CHORD
IMG_ARC_NOFILL
IMG_ARC_EDGED

IMG_ARC_PIE 和 IMG_ARC_CHORD 是互斥的;IMG_ARC_CHORD  只是用直线连接了起始和结束点,IMG_ARC_PIE  则产生圆形边界(如果两个都用,IMG_ARC_CHORD生效)。IMG_ARC_NOFILL  指明弧或弦只有轮廓,不填充。IMG_ARC_EDGED 指明用直线将起始和结束点与中心点相连,和 IMG_ARC_NOFILL  一起使用是画饼状图轮廓的好方法(而不用填充)。

bool imagefilledellipse ( resource image , int cx , int cy , int w , int h , int color )

imagefilledellipse() 在 image 所代表的图像中以 cx,cy(图像左上角为 0, 0)为中心画一个椭圆。w 和 h 分别指定了椭圆的宽和高。椭圆用 color 颜色填充。成功时返回 TRUE, 或者在失败时返回 FALSE.

bool imagefilledrectangle( resource image, int x1, int y1, int x2, int y2, int color )

该函数在image图像中绘制一个用color颜色填充了的矩形, 其左上角坐标为(x1, y1),右下角的坐标为(x2, y2)。(0,0)为图像的左上角。

例如:应用如上函数,绘制填充圆形和填充正方形,代码如下

 代码如下复制代码

<?php

  header("Content-type: image/png");//将图像输出到浏览器

  $img= imagecreate(400, 200);//创建一个400X200的画布

  $bg= imagecolorallocate($img, 0, 0, 255);//设置背景颜色

  $white= imagecolorallocate($img, 255, 255 ,255);//设置填充颜色

  imagefilledellipse($img, 100, 100, 150, 150,$white);//绘制填充圆形

  imagefilledrectangle($img, 200, 50, 300, 150,$white);//绘制填充正方形

  imagepng($img);//以png格式输出图像

  imagedestroy($img);//释放资源

运行结果如下所示

小编推荐的这篇文章介绍了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页面

 代码如下 复制代码

<?php

require_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=newGraph(600, 300);//设置画布大小

$graph->SetScale('textlin');//设置坐标刻度类型

$graph->SetShadow();//设置画布阴影

$graph->img->SetMargin(40, 30, 20, 40);//设置统计图边距

$barplot=newBarPlot($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();//输出图像

运行结果为:

小编给大家推荐的这篇文章介绍了thinkphp3.2中实现phpexcel导出带生成图片示例,非常实用,有兴趣的同学快来看看吧。

首先下载PHPEXCEL  下载地址:http://phpexcel.codeplex.com/        https://github.com/PHPOffice/PHPExcel

把Classes目录下的文件(PHPExcel.php和PHPExcel文件夹),放到ThinkPHP\Library\Org\Util目录下

PHPExcel.php  改名为 :PHPExcel.class.php

 

 代码如下复制代码

// 导出exl

 

  publicfunctionlook_down(){

 

    $id= I('get.id');

 

    $m= M ('offer_goods');

 

    $where['offer_id'] =$id;

 

    $data=$m->field('goods_id,goods_sn,goods_name,barcode,goods_type,price')->select();

 

      

 

    // 导出Exl

 

    import("Org.Util.PHPExcel");

 

    import("Org.Util.PHPExcel.Worksheet.Drawing");

 

    import("Org.Util.PHPExcel.Writer.Excel2007");

 

    $objPHPExcel=new\PHPExcel();

 

      

 

    $objWriter=new\PHPExcel_Writer_Excel2007($objPHPExcel);

 

    

 

    $objActSheet=$objPHPExcel->getActiveSheet();

 

      

 

    // 水平居中(位置很重要,建议在最初始位置)

 

    $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

 

    $objPHPExcel->setActiveSheetIndex(0)->getStyle('B1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

 

    $objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

 

    $objPHPExcel->setActiveSheetIndex(0)->getStyle('D')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

 

    $objPHPExcel->setActiveSheetIndex(0)->getStyle('E')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

 

    $objPHPExcel->setActiveSheetIndex(0)->getStyle('F')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

 

      

 

    $objActSheet->setCellValue('A1','商品货号');

 

    $objActSheet->setCellValue('B1','商品名称');

 

    $objActSheet->setCellValue('C1','商品图');

 

    $objActSheet->setCellValue('D1','商品条码');

 

    $objActSheet->setCellValue('E1','商品属性');

 

    $objActSheet->setCellValue('F1','报价(港币)');

 

    // 设置个表格宽度

 

    $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(16);

 

    $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(80);

 

    $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);

 

    $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);

 

    $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12);

 

    $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(12);

 

      

 

    // 垂直居中

 

    $objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);

 

    $objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);

 

    $objPHPExcel->getActiveSheet()->getStyle('D')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);

 

    $objPHPExcel->getActiveSheet()->getStyle('E')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);

 

    $objPHPExcel->getActiveSheet()->getStyle('F')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);

 

      

 

    foreach($dataas$k=>$v){

 

      $k+=2;

 

      $objActSheet->setCellValue('A'.$k,$v['goods_sn']); 

 

      $objActSheet->setCellValue('B'.$k,$v['goods_name']); 

 

          

 

        

 

      $img= M('goods')->where('goods_id = '.$v['goods_id'])->field('goods_thumb')->find();

 

      // 图片生成

 

      $objDrawing[$k] =new\PHPExcel_Worksheet_Drawing();

 

      $objDrawing[$k]->setPath('./Upload/'.$img['goods_thumb']);

 

      // 设置宽度高度

 

      $objDrawing[$k]->setHeight(80);//照片高度

 

      $objDrawing[$k]->setWidth(80);//照片宽度

 

      /*设置图片要插入的单元格*/

 

      $objDrawing[$k]->setCoordinates('C'.$k);

 

      // 图片偏移距离

 

      $objDrawing[$k]->setOffsetX(12);

 

      $objDrawing[$k]->setOffsetY(12);

 

      $objDrawing[$k]->setWorksheet($objPHPExcel->getActiveSheet());

 

        

 

      // 表格内容

 

      $objActSheet->setCellValue('D'.$k,$v['barcode']); 

 

      $objActSheet->setCellValue('E'.$k,$v['goods_type']); 

 

      $objActSheet->setCellValue('F'.$k,$v['price']);

 

          

 

      // 表格高度

 

      $objActSheet->getRowDimension($k)->setRowHeight(80);

 

        

 

    }

 

      

 

    $fileName='报价表'

 

    $date=date("Y-m-d",time());

 

    $fileName.="_{$date}.xls";

 

    $fileName= iconv("utf-8","gb2312",$fileName);

 

    //重命名表

 

    // $objPHPExcel->getActiveSheet()->setTitle('test');

 

    //设置活动单指数到第一个表,所以Excel打开这是第一个表

 

    $objPHPExcel->setActiveSheetIndex(0);

 

    header('Content-Type: application/vnd.ms-excel');

 

    header("Content-Disposition: attachment;filename=\"$fileName\"");

 

    header('Cache-Control: max-age=0');

 

    $objWriter= \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');

 

    $objWriter->save('php://output'); //文件通过浏览器下载

 

    // END 

 

  }

 

水平居中,垂直居中,高度 等设置。注意放的位置,如果你放在末尾,那么是下一样生效。放到头部,第一行生效(上面代码是第一行生效,如果放到foreach里面就是下一行生效)。

import介绍。import("Org.Util.PHPExcel.Writer.Excel2007"); 文件位置:Org\Util\PHPExcel\Writer\Excel2007.class.php

图片地址一定要是本地。objDrawing[ objDrawing[k]->setPath('./Upload/'.$img['goods_thumb']); 图片位置:安装目录/Upload/xxx

 

 

php数组指针操作怎么用?本文详细解析了php数组指针操作,初学php的同学可以参考一下,非常有用。

数组指针的操作:

移动数组指针的操作:

Next() 向下 同时会获得当前元素的值。

Prev() 向上同时会获得当前元素的值。

End() 移动到最后一个元素单元 获得最后一个元素的值

Reset() 移动到第一个单元 获得第一个元素的值。

如果移动不成功,返回false。

参数都为需要操作的数组,并且是引用传递。

获得指针指向的元素的信息:

Key();//获得当前数组指针指向的元素下标

Current();//获得当前数组指针指向的元素

只获取数据 不移动指针

还有一个混合的操作:

即可以获得当前指针元素的信息(键值) 也 可以同时移动指针。

Each(); 获得当前元素的信息(键和值的信息),

移动指针:

我们有时可以利用each的特性,来达到遍历数组的目的:

应该利用循环结构 配合each完成。

配合条件:each到最后一个元素时,就会返回false。

List 函数:

List的限制:只针对索引数组起作用。

利用list 和each 完成遍历

但是使用完each遍历后 数组指针是不会reset的重置的,需要手动重置。

[!--infotagslink--]

相关文章

  • Painter绘制帅气卡通魔法王子漫画教程

    今天小编在这里就来给Painter的这一款软件的使用者们来说一下绘制帅气卡通魔法王子漫画的具体教程,各位想知道绘制步骤的使用者,那么下面就快来跟着小编一起看一看教程...2016-09-14
  • 图解PHP使用Zend Guard 6.0加密方法教程

    有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
  • C#绘制曲线图的方法

    这篇文章主要介绍了C#绘制曲线图的方法,以完整实例形式较为详细的分析了C#进行曲线绘制的具体步骤与相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • Painter绘制雷神传插画教程

    今天小编在这里就来给Painter的这一款软件的使用者们来说一下绘制雷神传插画的教程,各位想知道具体绘制步骤的使用者,那么下面就快来跟着小编一起看看绘制方法吧。 ...2016-09-14
  • ps怎么使用HSL面板

    ps软件是现在很多人都会使用到的,HSL面板在ps软件中又有着非常独特的作用。这次文章就给大家介绍下ps怎么使用HSL面板,还不知道使用方法的下面一起来看看。 &#8195;...2017-07-06
  • Plesk控制面板新手使用手册总结

    许多的朋友对于Plesk控制面板应用不是非常的了解特别是英文版的Plesk控制面板,在这里小编整理了一些关于Plesk控制面板常用的使用方案整理,具体如下。 本文基于Linu...2016-10-10
  • 使用insertAfter()方法在现有元素后添加一个新元素

    复制代码 代码如下: //在现有元素后添加一个新元素 function insertAfter(newElement, targetElement){ var parent = targetElement.parentNode; if (parent.lastChild == targetElement){ parent.appendChild(newEl...2014-05-31
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • 使用percona-toolkit操作MySQL的实用命令小结

    1.pt-archiver 功能介绍: 将mysql数据库中表的记录归档到另外一个表或者文件 用法介绍: pt-archiver [OPTION...] --source DSN --where WHERE 这个工具只是归档旧的数据,不会对线上数据的OLTP查询造成太大影响,你可以将...2015-11-24
  • 如何使用php脚本给html中引用的js和css路径打上版本号

    在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css、js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候,浏览器就可以从浏览器的缓存中获取css、...2015-11-24
  • jQuery 1.9使用$.support替代$.browser的使用方法

    jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support 。 在更新的 2.0 版本中,将不再支持 IE 6/7/8。 以后,如果用户需要支持 IE 6/7/8,只能使用 jQuery 1.9。 如果要全面支持 IE,并混合...2014-05-31
  • 安装和使用percona-toolkit来辅助操作MySQL的基本教程

    一、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索...2015-11-24
  • PS怎么排除重叠图形

    PS排除重叠形状是什么意思?很多朋友都不是很清楚,其实方法很简单的,下面小编就为大家介绍介绍一下,不会的朋友可以参考本文,来看看吧。 步骤:1、在PS中,选择“矩形工具...2016-12-31
  • MySQL日志分析软件mysqlsla的安装和使用教程

    一、下载 mysqlsla [root@localhost tmp]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz--19:45:45-- http://hackmysql.com/scripts/mysqlsla-2.03.tar.gzResolving hackmysql.com... 64.13.232.157Conn...2015-11-24
  • php语言中使用json的技巧及json的实现代码详解

    目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它。我写过一篇《数据类型和JSON格式》,探讨它的设计思想。今天,我想总结一下PHP语言对它的支持,这是开发互联网应用程序(特别是编写API)必须了解的知识...2015-10-30
  • PHP实现无限级分类(不使用递归)

    无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
  • C#注释的一些使用方法浅谈

    C#注释的一些使用方法浅谈,需要的朋友可以参考一下...2020-06-25
  • php类的使用实例教程

    php类的使用实例教程 <?php /** * Class program for yinghua05-2 * designer :songsong */ class Template { var $tpl_vars; var $tpl_path; var $_deb...2016-11-25
  • python进行相关性分析并绘制散点图详解

    这篇文章主要介绍了python进行相关性分析并绘制散点图,具有一定借鉴价值,需要的朋友可以参考下,希望能够给你带来帮助...2021-09-18
  • 双冒号 ::在PHP中的使用情况

    前几天在百度知道里面看到有人问PHP中双冒号::的用法,当时给他的回答比较简洁因为手机打字不大方便!今天突然想起来,所以在这里总结一下我遇到的双冒号::在PHP中使用的情况!双冒号操作符即作用域限定操作符Scope Resoluti...2015-11-08