在PHP中绘制图像的函数非常丰富,包括点、线、各种几何图形等可以想象出来的平面图形,都可以通过PHP中提供的各种画图函数完成。我们在这里介绍一些常用的图像绘制,如果使用我们没有介绍过的函数,可以参考手册实现。另外,这些图形绘制函数都需要使用画布资源,并在画布中的位置通过坐标(原点是在画布左上角的起始位置,以像素为单位,沿着X轴正方向向右延伸,Y轴正方向向下延伸)决定,并且还可以通过函数的最后一个参数,设置每个图形的颜色。画布中的坐标系统如图所示。

一、函数图形区域填充imageFill()

通过PHP仅仅绘制出只有边线的几何图形是不够的,还可以使用对应的填充函数,完成图形区域的填充。除了每个图形都有对应的填充函数之外,还可以使用imageFill()函数实现区域填充。该函数的语法格式如下:

复制代码 代码如下:

bool imagefill(resource $image,int $x ,int $y,int $color)                    //区域填充

该函数在参数$image代表的图像上,相对于图像左上角(0,0)坐标处,从坐标($x,$y)处用参数$color指定的颜色执行区域填充。与坐标($x,$y)点颜色相同且相邻的点都会被填充。例如在下面的示例中,将画布的背景设置为红色。代码如下所示:

复制代码 代码如下:

< ?php
$im = imagecreatetruecolor(100, 100); //创建100*100大小的画布
$red = imagecolorallocate($im, 255, 0, 0); //设置一个颜色变量为红色
 
imagefill($im, 0, 0, $red); //将背景设为红色
 
header('Content-type:image/png'); //通知浏览器这不是文本而是一个图片
imagepng($im); //生成PNG格式的图片输出给浏览器
 
imagedestroy($im); //销毁图像资源,释放画布占用的内存空间
?>

二、绘制点和线imageSetPixel()、imageline()

画点和线是绘制图像中最基本的操作,如果灵活使用,可以通过它们绘制出千变万化的图像。在PHP中,使用imageSetPixel()函数在画布中绘制一个单一像素的点,并且可以设置点的颜色。其函数的原型如下所示:

复制代码 代码如下:

bool imagesetpixel(resource $image,int $x,int $y,int $color)                         //画一个单一像素

该函数在第一个参数$image中提供的画布上,距离圆点分别为$x和$y的坐标位置,绘制一个颜色为$color的一个像素点。理论上使用画点函数便可以画出所需要的所有图形,也可以使用其他的绘图函数。如果需要绘制一条线段,可以使用imageline()函数,其语法格式如下所示:

复制代码 代码如下:

bool imageline(resource $image,int $x1,int $y1,int $x2,int $y2,int $color)                //画一条线段

我们都知道两点确定一条线段,所以该函数使用$color颜色在图像$image中,从坐标($x1,$y1)开始到($x2,$y2)坐标结束画一条线段。

三、绘制矩形imageRectangle()、imageFilledRectangle()

可以使用imageRectangle()函数绘制矩形,也可以通过imageFilledRectangle()函数绘制一个矩形并填充。这两个函数的语法格式如下所示:

复制代码 代码如下:

bool imagerectangle(resource $image,int $x1 , int $y1,int $x2,int $y2,int $color)                    //画一个矩形
bool imagefilledrectangle(resource image,int $x1 ,int $y1 ,int $x2 ,int $y2,int $color)                      //画一个矩形并填充

这两个函数的行为类似,都是在$image图像中画一个矩形,只不过前者是使用$color参数指定矩形的边线颜色,而后者则是使用这个颜色填充矩形。相对于图像左上角的(0,0)位置,矩形的左上角坐标为($x1,$y1),右下角坐标为($x2,$y2)。

四、绘制多边形imagePolygon()、imagefilledpolygon()

可以使用imagePolygon()函数绘制一个多边形,也可以通过imageFilledPolygon()函数绘制一个多边形并填充。这两个函数的语法格式如下:

复制代码 代码如下:

bool imagepolygon(resource $image,array $points,int $num_points,int $color)                   //画一个多边形
bool imagefilledpolygon(resource $image ,array $points,int $num_points,int $color)                     //画一个多边形并填充

这两个函数的行为类似,都是在$image图像中画一个多边形,只不过前者是使用$color参数指定多边形的边线颜色,而后者则是使用这个颜色填充多边形。第二个参数$points是一个PHP数组,包含了多边形的各个顶点坐标。即points[0]=x0,points[1]=y0,points[2]=x1,points[3]=y1,依此类推。第三个参数$num_points是顶点的总数,必须大于3.

五、绘制椭圆imageEllipse()、imageFilledElipse()

可以使用imageEllipse()函数绘制一个椭圆,也可以通过imageFilledEllipse()函数绘制一个椭圆并填充。这两个函数的语法格式如下:

复制代码 代码如下:

bool imageellipse(resource $image,int $cx,int $cy,int $w,int $h,int $color)              //画一个椭圆
bool imagefilledellipse(resource $image,int $cx,int $cy,int $w,int $h,int $color)               //画一个椭圆填充

这两个函数行为类似,都是在$image图像中画一个椭圆,只不过前者是使用$color参数指定椭圆形的边线颜色,而后者则是使用它填充颜色。相对于画布左上角坐标(0,0),以($cx,$cy)坐标为中心画一个椭圆,参数$w和$h分别指定了椭圆的宽和高。如果成功则返回TRUE,失败则返回FALSE。

六、绘制弧线imageArc()

前面介绍的3D扇形统计图示例,就是使用绘制填充圆弧的函数实现的。可以使用imageArc()函数绘制一条弧线,以及圆形和椭圆形。这个函数的语法格式如下:

复制代码 代码如下:

bool imagearc(resource $image ,int $cx,int $cy,int $w,int $h,int $s,int $e ,int $color) //画椭圆弧

相对于画布左上角坐标(0,0),该函数以($cx,$cy)坐标为中心,在$image所代表的图像中画一个椭圆弧。其中参数$w和$h分别指定了椭圆的宽度和高度,起始点和结束点以$s和$e参数以角度指定。0º位于三点钟位置,以顺时针方向绘画。如果要绘制一个完整的圆形,首先要将参数$w和$h设置为相等的值,然后将起始角度$s设置为0,结束角度$e指定为360.如果需要绘制填充圆弧,可以查询imageFilledArc()函数使用

PHP中绘制图像的一些函数总结相关推荐

  1. php画星球,PHP中绘制图像的一些函数总结

    在PHP中绘制图像的函数非常丰富,包括点.线.各种几何图形等可以想象出来的平面图形,都可以通过PHP中提供的各种画图函数完成.我们在这里介绍一些常用的图像绘制,如果使用我们没有介绍过的函数,可以参考手 ...

  2. python tkinter画笑脸_python – 如何在tkinter窗口中绘制图像

    如何在tkinter窗口中绘制图像(我使用的是 python 3.3)?我正在寻找一个可以在tkinter窗口的给定位置绘制图像的语句. 是啊- 任何答案将不胜感激.这里是我想要使用代码的程序的源代码 ...

  3. Matlab 中绘制模糊隶属度函数

    6.2模糊推理结构FIS 6.2.1不使用数据聚类方法从数据生成FIS结构 函数 genfis1 格式 fismat=genfis1(data) fismat=genfis1(data,numMFs, ...

  4. matplotlib——在 Jupyter Notebook中绘制图像时只显示变量信息不显示图片

    1 问题描述 最近我在使用 Jupyter Notebook做实验时,使用matplotlib包绘制图像,但是显示图像时,只看到打印的变量信息,却没有显示图像: 后来就请教了一下度娘- 2 解决方案 ...

  5. matlab中绘制图像

    %MALTLAB绘图基础 %plot函数的用法 %plot(X,Y,LineSpec) %线形(四种):-实线:--虚线::点线:-.点划线 %坐标点样式(常用的几种):o圆 *星 x十字 s正方形 ...

  6. matlab中绘制三维散点图scatter3函数的使用方法(附matlab代码)

    一.语法 1.scatter3(X,Y,Z) 在向量 X.Y 和 Z 指定的位置显示圆圈. 2.scatter3(X,Y,Z,S) 使用 S 指定的大小绘制每个圆圈.要绘制大小相等的圆圈,请将 S 指 ...

  7. php中绘制图像的手册,推荐功能超级强大的PHP画图库JpGraph

    背景知识 JpGraph:以前用PHP作图时必须要掌握复杂抽象的画图函数,或者借助一些网上下载的花柱形图.饼形图的类来实现.没有一个统一的chart类来实现图表的快速开发. 现在我们有了一个新的选择: ...

  8. 用matlab对图像进行边缘填充,matlab中的图像边界填充函数 | 学步园

    padarray 功能:填充图像或填充数组. 用法:B = padarray(A,padsize,padval,direction) A为输入图像,B为填充后的图像, padsize给出了给出了填充的 ...

  9. MFC在对话框中绘制图像

    在OnPaint函数的基础上接着写如下绘制代码 //初始化画笔类对象HDC hdc = ::GetDC(m_hWnd);HPEN hp;HBRUSH hbr;HFONT hf;TEXTMETRIC t ...

最新文章

  1. JavaScript的运行模式
  2. 58 第一个工程项目(Celery)
  3. EM Alogrithm
  4. 常用的SSH注解标签
  5. 如何安装docker-compose
  6. 【中级软考】结构化开发方法是啥,主要包含哪些内容?
  7. LeetCode 1797. 设计一个验证系统(map)
  8. Java核心类库篇3——util
  9. 基于源码剖析nodejs模块系统
  10. java map clone,map.putall()和map.clone()方法有什么区别?
  11. python安装pyqt4_如何使用pip在Windows上安装PyQt4?
  12. 泰坦尼克号的数据集的下载 tensflow
  13. [学习笔记]什么是存储过程?
  14. Ceph监控部署之inkscopeCalamari(v10.2.11)
  15. 徐磊英语语法整理1-3 词性,语序
  16. docker笔记之部署安装
  17. IOS唤起键盘后--导致页面底部空白问题
  18. 使用ijkplayer进行视频播放
  19. C++ Builder XE2 / RAD Studio XE2软件的下载安装及RTKLIB工程打开和编译
  20. 高速数据采集卡——西安慕雷之产品

热门文章

  1. hdu 4309 最大流 + DFS
  2. 【C 语言】文件操作 ( 配置文件读写 | 框架搭建 | 头文件定义 | 头文件导入限制 | 兼容 C++ 语言 | 函数形参输入输出属性注释)
  3. 【C 语言】数据类型本质 ( 数据类型别名 | typedef 关键字 | 为复杂数据类型设置别名 | 为简单数据类型设置别名 )
  4. 【IOC 控制反转】Android 视图依赖注入 ( 视图依赖注入步骤 | 视图依赖注入代码示例 )
  5. 【字节码插桩】Android 打包流程 | Android 中的字节码操作方式 | AOP 面向切面编程 | APT 编译时技术
  6. 【Flutter】屏幕像素适配方案 ( flutter_screenutil 插件 )
  7. 【FFmpeg】FFmpeg 帮助文档使用
  8. 【OpenGL】六、Visual Studio 2019 配置 GitHub ( 提取和拉取简介 | 拉取远程代码 )
  9. 【数据挖掘】数据挖掘总结 ( 拉普拉斯修正 | 贝叶斯分类器示例2 ) ★
  10. 【网络安全】网络安全攻防 -- 黑客攻击简要流程