PHP(5):绘图

  在应用开发中,绘图是不能绕过的一项技术,比如在用户需要的图像绘制、验证码、水印等中,PHP绘制图形比较容易,了解基本的函数即可开始编写代码。

  在php.ini中打开绘图设置:extension=gd2,重启Web服务器。

  图象的左上角坐标是 (0,0)。

  下面的代码绘制一幅图片并返回给客户端:

<?php
//	imagecreat(宽,高):创建一个白色背景的画布
//	imagecreatetrueColor(宽,高):创建一个黑色背景(无色)的真彩画布
//	imagecraetefromjpeg(图片文件路径):打开一个为JPEG格式的文件
//	imagecraetefromgif(图片文件路径):打开一个为GIF格式的文件
//	imagecraetefrompng(图片文件路径):打开一个为PNG格式的文件
//	imagecolorallocate():给指定的画布资源分配颜色rgb(r,g,b)
//	imagefill(图片资源ID,x,y,颜色ID):填充颜色
//	imageline(图片资源ID,左上角x,左上角y,右下角x,右下角y,颜色ID):从起点(左上角x,左上角y)到终点(右下角x,右下角y)画直线
//	imageractangle(图片资源ID,左上角x,左上角y,右下角x,右下角y,颜色ID):画矩形框
//	imagearc(图片资源ID,轴点x,轴点y,宽度,高度,弧度的起点,弧度的终点,颜色ID):画圆弧
//	imagestring(图片资源ID,文字大小,起始坐标x,起始坐标y,内容,颜色ID):在图片上写字(主要是ASCII的英文字符)
//	imagettftext(图片资源ID,文字大小,旋转角度,起始坐标x,起始坐标y,颜色ID,字体,内容):在图片上写字(任意文字,包括汉字)
$img=imagecreateTruecolor(300,200) or dir('创建图片失败!');//创建图片
$colorBack=imagecolorallocate($img,9,19,199);//定义颜色
imagefill($img,1,1,$colorBack);//填充背景色
$colorPen=imagecolorallocate($img,255,0,0);//定义颜色
imageline($img,3,3,119,119,$colorPen);//画直线
imagerectangle($img,17,17,77,77,$colorPen);//画矩形
$colorPen=imagecolorallocate($img,0,255,0);//定义颜色
imagearc($img,150,100,100,100,180,360,$colorPen);//画圆弧
$colorPen=imagecolorallocate($img,255,255,0);//定义颜色
imagestring($img,10,10,30,'PHP String',$colorPen);//输出PHP String
$font='simkai.ttf';
imagettftext($img,19,45,139,139,$colorPen,realpath($font),'PHP 绘图');//输出PHP绘图
//imagepng($img,'test.png');//存储在本地
header('Content-type:image/png');//返回给浏览器的响应头,告诉浏览器是PNG图片
imagepng($img);
imagedestroy( $img );//销毁资源
?>

  客户端显示:

  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 — 销毁一图像

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值