一、GD2函数库
1、创建画布
使用函数库GD2,开发人员既可以在已有图片的基础上进行绘制,也可以在没有任何素材的基础上绘制,在这种情况下首先要创建画布,之后所有操作都将依据所创建的画布进行。
resource imagecreate ( int x_size , int y_size )
新建一个基于调色板的图像,返回一个图像标识符,代表了一幅大小为 x_size 和 y_size 的空白图像(单位为像素pixel)。

2、颜色处理
int imagecolorallocate ( resource image , int red , int green , int blue )
为一幅图像分配颜色,返回一个标识符,代表了由给定的 RGB 成分组成的颜色。red,green 和 blue 分别是所需要的颜色的红,绿,蓝成分。这些参数是 0 到 255 的整数或者十六进制的 0x00 到 0xFF。imagecolorallocate() 必须被调用以创建每一种用在 image 所代表的图像中的颜色。 第一次对 imagecolorallocate() 的调用会给基于调色板的图像填充背景色,即用 imagecreate() 建立的图像。

3、输出图像
1)发送原生HTTP头
void header ( string str [, bool replace = true [, int http_response_code ]] )
注意,header() 必须在任何实际输出之前调用,不管是普通的 HTML 标签,还是文件或 PHP 输出的空行,空格。这是个常见的错误,在通过include,require,或者其访问其他文件里面的函数的时候,如果在header()被调用之前,其中有空格或者空行。 同样的问题也存在于单独的 PHP/HTML 文件中。
参数str表示头字符串,有两种特别的头。第一种以“HTTP/”开头的 (case is not significant),将会被用来计算出将要发送的HTTP状态码。 例如在 Apache 服务器上用 PHP 脚本来处理不存在文件的请求(使用 ErrorDocument 指令), 就会希望脚本响应了正确的状态码。第二种特殊情况是“Location:”的头信息。它不仅把报文发送给浏览器,而且还将返回给浏览器一个 REDIRECT(302)的状态码,除非状态码已经事先被设置为了201或者3xx。
可选参数 replace 表明是否用后面的头替换前面相同类型的头。 默认情况下会替换。如果传入 FALSE,就可以强制使相同的头信息并存。
参数http_response_code强制指定HTTP响应的值。注意,这个参数只有在报文字符串(str)不为空的情况下才有效。

2)输出图片
bool imagegif ( resource image [, string filename ] )
从 image 图像以 filename 为文件名创建一个 GIF 图像。image 参数是 imagecreate() 或 imagecreatefrom* 函数的返回值。图像格式为 GIF87a。如果用了 imagecolortransparent() 使图像为透明,则其格式为 GIF89a。
可选参数filename是文件保存的路径,如果未设置或为 NULL,将会直接输出原始图象流。
成功时返回 TRUE, 或者在失败时返回 FALSE。
注意,不过从 GD 库 1.6 起所有的 GIF 支持都移除了,并在版本 2.0.28 中加了回来。如果使用这些 版本之间的 GD 库时本函数不可用。可以使用bool function_exists ( string function_name )在已经定义的函数列表(包括系统自带的函数和用户自定义的函数)中查找 function_name的方法来检查是否支持某种图像格式(如function_exists(‘imagegif’)),但是自 PHP 3.0.18 和 4.0.2 起可以用int imagetypes ( void )(本函数以比特字段方式返回与当前 PHP 版本关联的 GD 库所支持的图像格式。将返回以下结果,IMG_GIF | IMG_JPG | IMG_PNG | IMG_WBMP| IMG_XPM。)函数代替 function_exists() 来检查是否支持某种图像格式。
bool imagepng ( resource image [, string filename ] )和imagegif()函数使用方法类似。
bool imagejpeg ( resource image [, string filename [, int quality ]] )
可选参数filename文件保存的路径,如果未设置或为 NULL,将会直接输出原始图象流。如果要省略这个参数而提供 quality 参数,使用NULL。
可选参数quality范围从 0(最差质量,文件更小)到 100(最佳质量,文件最大)。默认为 IJG 默认的质量值(大约75)。
成功时返回 TRUE, 或者在失败时返回 FALSE。
注意,如果想输出渐进式 JPEG,需要用 imageinterlace() 函数将隔行扫描比特置位(int imageinterlace ( resource image [, int interlace ] ),打开或关闭隔行扫描的比特标记。如果 interlace 为 1 则图像为隔行扫描的,如果 interlace 为 0 则图像为非隔行扫描的。如果设定了隔行扫描比特标记而图像使用 JPEG 格式,则图像被创建为渐进式 JPEG。本函数返回图像中是否设定了隔行扫描比特标记。)。
bool imagewbmp ( resource image [, string filename [, int foreground ]] )
可选参数filename如果省略,则直接将原图像流输出。通过用 header() 发送 image/vnd.wap.wbmp 的 Content-type,可以创建直接输出 WBMP 图像的 PHP 脚本。
用可选的 foreground 参数可以设定前景色,用 imagecolorallocate() 函数返回的颜色标识符。默认前景色是黑色。
注意,WBMP 支持仅能用于 PHP 编译时加入了 GD-1.8 或更高版本时。

4、绘制基本图形
1)画一条线段
bool imageline ( resource image , int x1 , int y1 , int x2 , int y2 , int color )
用 color 颜色在图像 image 中从坐标 x1,y1 到 x2,y2(图像左上角为 0, 0)画一条线段。

2)画椭圆弧
bool imagearc ( resource image , int cx , int cy , int w , int h , int s , int e , int color )
以 cx,cy(图像左上角为 0, 0)为中心在 image 所代表的图像中画一个椭圆弧。w 和 h 分别指定了椭圆的宽度和高度,起始和结束点以 s 和 e 参数以角度指定。0°位于三点钟位置,以顺时针方向绘画。

3)画矩形
bool imagerectangle ( resource image , int x1 , int y1 , int x2 , int y2 , int col )
用 col 颜色在 image 图像中画一个矩形,其左上角坐标为 x1, y1,右下角坐标为 x2, y2。图像的左上角坐标为 0, 0。

5、填充几何图形
1)区域填充
bool imagefill ( resource image , int x , int y , int color )
在 image 图像的坐标 x,y(图像左上角为 0, 0)处用 color 颜色执行区域填充(即与 x, y 点颜色相同且相邻的点都会被填充)。

2) 画一椭圆弧且填充
bool imagefilledarc ( resource image , int cx , int cy , int width , int height , int start , int end , int color , int style )
参数image是由图象创建函数(例如imagecreatetruecolor())返回的图象资源。
参数cx是中间的 x 坐标。
参数cy是中间的 y 坐标。
参数width是椭圆弧的宽度。
参数height是椭圆弧的高度。
参数start是起点角度。
参数end是终点角度,0°位于三点钟位置,以顺时针方向绘画。
参数color是 imagecolorallocate() 创建的颜色标识符。
参数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 一起使用是画饼状图轮廓的好方法(而不用填充)。
注意,此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

3)画一椭圆并填充
boo imagefilledellipse ( resource image , int cx , int cy , int width , int height , int color )
其使用方法和imagefilledarc()函数类似。

4)画一矩形并填充
bool imagefilledrectangle ( resource image , int $x1 , int y1 , int x2 , int y2 , int color )
imagefilledrectangle() 在 image 图像中画一个用 color 颜色填充了的矩形,其左上角坐标为 x1,y1,右下角坐标为 x2,y2。0, 0 是图像的最左上角。

6、输出字符串
1)水平地画一行字符串
bool imagestring ( resource image , int font , int x , int y , string s , int col )
用 col 颜色将字符串 s 画到 image 所代表的图像的 x,y 坐标处(这是字符串左上角坐标,整幅图像的左上角为 0,0)。如果 font 是 1,2,3,4 或 5,则使用内置字体。

2)垂直地画一行字符串
bool imagestringup ( resource image , int font , int x , int y , string s , int col )
用 col 颜色将字符串 s 垂直地画到 image 所代表的图像的 x, y 座标处(图像的左上角为 0, 0)。如果 font 是 1,2,3,4 或 5,则使用内置字体。

3)用 TrueType 字体向图像写入文本
array imagettftext ( resource image , float size , float angle , int x , int y , int color , string fontfile , string text )
参数image是由图象创建函数(例如imagecreatetruecolor())返回的图象资源。
参数size是字体的尺寸。根据 GD 的版本,为像素尺寸(GD1)或点(磅)尺寸(GD2)。
参数angle是角度制表示的角度,0 度为从左向右读的文本。更高数值表示逆时针旋转。例如 90 度表示从下向上读的文本。
参数x是由 x,y 所表示的坐标定义了第一个字符的基本点(大概是字符的左下角)。这和 imagestring() 不同,其 x,y 定义了第一个字符的左上角。例如 “top left” 为 0, 0。
参数y是Y 坐标。它设定了字体基线的位置,不是字符的最底端。
参数color是颜色索引。使用负的颜色索引值具有关闭防锯齿的效果。见 imagecolorallocate()。
参数fontfile是想要使用的 TrueType 字体的路径(全路径)。根据 PHP 所使用的 GD 库的不同,当 fontfile 没有以 / 开头时则 .ttf 将被加到文件名之后并且会在库定义字体路径中尝试搜索该文件名。当使用的 GD 库版本低于 2.0.18 时,一个空格字符 而不是分号将被用来作为不同字体文件的“路径分隔符”。不小心使用了此特性将会导致一条警告信息:Warning: Could not find/open font。对受影响的版本来说唯一解决方案就是将字体移动到不包含空格的路径中去。
参数 text是UTF-8 编码的文本字符串。可以包含十进制数字化字符表示(形式为:€)来访问字体中超过位置 127 的字符。UTF-8 编码的字符串可以直接传递。 命名实体,比如 © 是不支持的。可以考虑使用 html_entity_decode() 来解码命名实体为 UTF-8 字符。 (自 PHP 5.0.0 开始 html_entity_decode() 开始支持)如果字符串中使用的某个字符不被字体支持,一个空心矩形将替换该字符。使用iconv()函数可以防止中文乱码,如iconv(“UTF-8”,“GB2312//IGNORE”,“月份”)。
返回一个含有 8 个单元的数组表示了文本外框的四个角,顺序为坐下角,右下角,右上角,左上角。这些点是相对于文本的而和角度无关,因此“左上角”指的是以水平方向看文字时其左上角。
本函数同时需要 GD 库和 FreeType 库。

4)取得使用 TrueType 字体的文本的范围
array imagettfbbox ( float size , float angle , string fontfile , string text )
本函数计算并返回一个包围着 TrueType 文本范围的虚拟方框的像素大小。
参数size是像素单位的字体大小。
参数angle是text 将被度量的角度大小。
参数fontfile是TrueType 字体文件的文件名(可以是 URL)。根据 PHP 所使用的 GD 库版本,可能尝试搜索那些不是以 ‘/’ 开头的文件名并加上 ‘.ttf’ 的后缀并搜索库定义的字体路径。
参数text是要度量的字符串。
imagettfbbox() 返回一个含有 8 个单元的数组表示了文本外框的四个角:
0 左下角 X 位置
1 左下角 Y 位置
2 右下角 X 位置
3 右下角 Y 位置
4 右上角 X 位置
5 右上角 Y 位置
6 左上角 X 位置
7 左上角 Y 位置
这些点是相对于文本的而和角度无关,因此“左上角”指的是以水平方向看文字时其左上角。
本函数同时需要 GD 库和 FreeType 库。

二、Jpgraph类库
Jpgraph类库是一个可以应用在PHP4.3.1以上版本的用于图形图像绘制的类库(主要用于创建统计图),该类库完全基于GD2函数库编写。

PHP学习笔记——图形图像相关推荐

  1. Caffe学习笔记4图像特征进行可视化

    Caffe学习笔记4图像特征进行可视化 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit201 ...

  2. C++下opencv学习笔记(一)(图像的简单读取丶显示与存储)

    C++下opencv学习笔记(一)(图像的简单读取丶显示与存储) 前言 学习C++ OpenCV,第一需要具备面向对象语言的基础,第二要对图像处理机器学习有基础了解,容易入门.觉得自己基础已经有了可以 ...

  3. OpenCV学习笔记(九)——图像轮廓(下)

    <OpenCV轻松入门:面向Python>学习笔记(九) 1-3 查找并绘制轮廓.矩特性及Hu矩 4-5 轮廓拟合及凸包 6. 利用形状场景算法比较轮廓 6.1 计算形状场景距离 6.2 ...

  4. Opencv学习笔记(八) -- 图像色彩空间转换

    1.常见图像色彩空间 RGB RGB色彩模式是工业界的一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红.绿.蓝三个通道 ...

  5. OpenCV学习笔记(七)——图像梯度及边缘检测

    图像梯度计算的是图像变化的速度.对于图像的边缘部分,其灰度值变化较大,梯度值也较大:相反,对于图像中比较平滑的部分,其灰度值变化较小,相应的梯度值也较小.一般情况下,图像梯度计算的是图像的边缘信息. ...

  6. 【CV学习笔记】图像预处理warpaffine-cuda加速

    1.前言 在上个学习笔记中学习warpaffine,并且在opencv下面实现了图像的预处理,而warpaffine可以很好的利用cuda加速来实现,于是基于手写AI的项目,又学习了warpaffie ...

  7. 【学习笔记】图像超分辨

    参考文章:2020 图像超分最新综述及上采样技术一览 定义 图像超分辨是将低分辨图像恢复为高分辨图像的方法. F ( ⋅ ) F(\cdot) F(⋅)为超分辨模型, θ \theta θ为模型参数. ...

  8. Python 计算两个连通子图距离_【CV学习笔记】图像的计算

    关注"深度学习冲鸭",一起学习一起冲鸭! 设为星标,第一时间获取更多干货 作者:云时之间 来源:知乎 链接:https://zhuanlan.zhihu.com/p/1038790 ...

  9. 《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(四)图像的矩

    8.4 图像的矩 从一幅数字图形中计算出来的矩集,通常描述了该图像形状的全局特征,并提供了大量关于该图像不同类型的几何特性信息,如大小.位置.方向.形状等 (1)一阶矩与形状有关 (2)二阶矩显示曲线 ...

最新文章

  1. payara 创建 集群_在Payara Server和GlassFish中配置密码
  2. input输入数字验证
  3. php域运算符号,PHP中的域运算符号是()。
  4. Bootstrap创建按钮工具栏
  5. DllMain加载其他DLL造成的死锁问题及其解决办法
  6. php记住用户名功能,php使用cookie实现记住用户名和密码实现代码
  7. python语言程序设计实践教程陈东_《Python程序设计》(陈春晖)【摘要 书评 试读】- 京东图书...
  8. 在dos下或web下Fatal Error: undefined function mysql_connect()
  9. mysql教程手机版_MySQL 入门教程
  10. 不同运营商链路聚合_聚合路由器在视频直播应用中的优势
  11. ASM 管理 转自三思笔记
  12. 前端实现PDF分页与Vue中的render函数
  13. Python Selenium的下载和安装
  14. 微信小程序day01
  15. ps 2019直装版 for Mac
  16. L3-020 至多删三个字符 (30 分)
  17. 〈Android 群英传-神兵利器〉第7章一个的寂寞与一群人的狂欢
  18. ocp认证考试报名_OCP最新报名考证流程
  19. IDEA编译代码报错,找不到符号:找不到符号包
  20. 成功解决: 支付宝报错钓鱼网站

热门文章

  1. android 调用微信语音识别,Android 仿微信语音识别
  2. 组态王中时间存access怎么存_组态王数据保存
  3. 4-2-6 二叉树及其遍历 / 二叉搜索树 / 完全二叉树 完全二叉搜索树 (30 分)
  4. 我想,这才是情侣之间的幸福,好羡慕他们。
  5. IDEA2022配置Tomcat服务器教程(超细致版)
  6. 【转载】目前市场上主流的BI产品主要有哪些?
  7. Windows/Linux下C++对于UUID的跨平台封装
  8. 货币政策新款“奥利给”:普惠小微企业信贷支持计划的制约与动力
  9. P2676 [USACO07DEC]Bookshelf B
  10. bde连接oracle失败,BDE联接出错,求助