在应用开发中,绘图是不能绕过的一项技术,比如在用户需要的图像绘制、验证码、水印等中,PHP绘制图形比较容易,了解基本的函数即可开始编写代码。
在php.ini中打开绘图设置:extension=gd2,重启Web服务器。
图象的左上角坐标是 (0,0)。
下面的代码绘制一幅图片并返回给客户端:
客户端显示:
PHP提供了丰富的绘图函数,在编写代码前肯定要大致了解一下函数的作用,根据需要再去查手册资料以确定详情。
比如,绘制虚线,可以自己来绘制,也可以利用imagedashedline函数来完成,实际上,推荐的做法是利用imagesetstyle() 和 imageline() 的组合来实现。
一、图像创建 ⑴ imagecreatetruecolor — 新建一个真彩色图像 ⑵ imagealphablending — 设定图像的混色模式
二、为图像设置颜色 ⑴ imagecolorallocate — 为一幅图像分配颜色 ⑵ imagecolorallocatealpha — 为一幅图像分配颜色和alpha ⑶ imagecolorat — 取得某像素的颜色索引值 ⑷ imagecolorclosest — 取得与指定的颜色最接近的颜色的索引值 ⑸ imagecolorclosestalpha — 取得与指定的颜色加透明度最接近的颜色 ⑹ imagecolorclosesthwb — 取得与给定颜色最接近的色度的黑白色的索引 ⑺ imagecolorexact — 取得指定颜色的索引值 ⑻ imagecolorexactalpha — 取得指定的颜色加透明度的索引值 ⑼ imagecolorresolve — 取得指定颜色的索引值或有可能得到的最接近的替代值 ⑽ imagecolorresolvealpha — 取得指定颜色和alpha 的索引值或有可能得到的最接近的替代值 ⑾ imagecolorsforindex — 取得某索引的颜色 ⑿ imagecolortransparent — 将某个颜色定义为透明色 ⒀ imagecolorstotal — 取得一幅图像的调色板中颜色的数目 ⒁ imagecolorset — 给指定调色板索引设定颜色 ⒂ imagecolormatch — 使一个图像中调色板版本的颜色与真彩色版本更能匹配 ⒃ imagecolordeallocate — 取消图像颜色的分配 ⒄ imagepalettecopy — 将调色板从一幅图像拷贝到另一幅 ⒅ imagepalettetotruecolor — 将基于调色板的图像转换为真彩色
三、在图像上输出点线面 ⑴ imagesetstyle — 设定画线的风格 ⑵ imagesetthickness — 设定画线的宽度 ⑶ imagesetbrush — 设定画线用的画笔图像 ⑷ imageline — 画一条线段 ⑸ imagedashedline — 画一虚线 ⑹ imagesetpixel — 画一个单一像素 ⑺ imagerectangle — 画一个矩形 ⑻ imagepolygon — 画一个多边形 ⑼ imagearc — 画椭圆弧 ⑽ imageellipse — 画一个椭圆 ⑾ imagefill — 区域填充 ⑿ imagefilledarc — 画一椭圆弧且填充 ⒀ imagefilledellipse — 画一椭圆并填充 ⒁ imagefilledpolygon — 画一多边形并填充 ⒂ imagefilledrectangle — 画一矩形并填充 ⒃ imagefilltoborder — 区域填充到指定颜色的边界为止
四、在图像上输出文本 ⑴ imagefontheight — 取得字体高度 ⑵ imagefontwidth — 取得字体宽度 ⑶ imageloadfont — 载入一新字体 ⑷ imageftbbox — 给出一个使用 FreeType 2 字体的文本框 ⑸ imagefttext — 使用 FreeType 2 字体将文本写入图像 ⑹ imagechar — 水平地画一个字符 ⑺ imagecharup — 垂直地画一个字符 ⑻ imagestring — 水平地画一行字符串 ⑼ imagestringup — 垂直地画一行字符串 ⑽ imagepsbbox — 给出一个使用 PostScript Type1 字体的文本方框 ⑾ imagepsencodefont — 改变字体中的字符编码矢量 ⑿ imagepsextendfont — 扩充或精简字体 ⒀ imagepsfreefont — 释放一个 PostScript Type 1 字体所占用的内存 ⒁ imagepsloadfont — 从文件中加载一个 PostScript Type 1 字体 ⒂ imagepsslantfont — 倾斜某字体 ⒃ imagepstext — 用 PostScript Type1 字体把文本字符串画在图像上 ⒄ imagettfbbox — 取得使用 TrueType 字体的文本的范围 ⒅ imagettftext — 用 TrueType 字体向图像写入文本
五、电子信息签名 ⑴ iptcembed — 将二进制 IPTC 数据嵌入到一幅 JPEG 图像中 ⑵ iptcparse — 将二进制 IPTC 块解析为单个标记
六、图像存储 ⑴ imagegd2 — 将 GD2 图像输出到浏览器或文件 ⑵ imagegd — 将 GD 图像输出到浏览器或文件 ⑶ imagegif — 输出图象到浏览器或文件。 ⑷ imagejpeg — 输出图象到浏览器或文件。 ⑸ imagepng — 以 PNG 格式将图像输出到浏览器或文件 ⑹ imagewbmp — 以 WBMP 格式将图像输出到浏览器或文件 ⑺ imagewebp — 将 WebP 格式的图像输出到浏览器或文件 ⑻ imagexbm — 将 XBM 图像输出到浏览器或文件 ⑼ image2wbmp — 以 WBMP 格式将图像输出到浏览器或文件
七、图像格式转换 ⑴ jpeg2wbmp — 将 JPEG 图像文件转换为 WBMP 图像文件 ⑵ png2wbmp — 将 PNG 图像文件转换为 WBMP 图像文件
八、截图 ⑴ imagegrabscreen — 捕获整个屏幕 ⑵ imagegrabwindow — 捕获一个窗口
九、图像变形 ⑴ imageaffine — 返回经过仿射变换后的图像,剪切区域可选 ⑵ imageaffinematrixconcat — 合并两个矩阵 ⑶ imageaffinematrixget — 返回包含仿射变形源图像的图像,使用可选的剪裁区域 ⑷ imagerotate — 用给定角度旋转图像 ⑸ imagecrop —使用给定的区域裁剪图像 ⑹ imagecropauto — 使用可用模式自动裁剪图像 ⑺ imagescale —使用给定的新宽度和高度缩放图像
十、图像复制 ⑴ imagecopy — 拷贝图像的一部分 ⑵ imagecopymerge — 拷贝并合并图像的一部分 ⑶ imagecopymergegray — 用灰度拷贝并合并图像的一部分 ⑷ imagecopyresampled — 重采样拷贝部分图像并调整大小 ⑸ imagecopyresized — 拷贝部分图像并调整大小 ⑹ imagecreate — 新建一个基于调色板的图像 ⑺ imagecreatefromgd2 — 从 GD2 文件或 URL 新建一图像 ⑻ imagecreatefromgd2part — 从给定的 GD2 文件或 URL 中的部分新建一图像 ⑼ imagecreatefromgd — 从 GD 文件或 URL 新建一图像 ⑽ imagecreatefromgif — 由文件或 URL 创建一个新图象。 ⑾ imagecreatefromjpeg — 由文件或 URL 创建一个新图象。 ⑿ imagecreatefrompng — 由文件或 URL 创建一个新图象。 ⒀ imagecreatefromstring — 从字符串中的图像流新建一图像 ⒁ imagecreatefromwbmp — 由文件或 URL 创建一个新图象。 ⒂ imagecreatefromwebp — 由文件或 URL 创建一个新图象。 ⒃ imagecreatefromxbm — 由文件或 URL 创建一个新图象。 ⒄ imagecreatefromxpm — 由文件或 URL 创建一个新图象。
十一、图像资源销毁 ⑴ imagedestroy — 销毁一图像