php使用GD2绘制几何图形示例,php使用gd2绘制基本图形示例

本文实例陈诉了php使用GD2绘制几何图形的法子。分享给我们供我们仿效,具体如下:

正文实例陈说了php使用gd2绘制基本图形。分享给我们供大家仿照效法,具体如下:

PHP中GD库的采纳

利用GD2函数既可以够绘制线条图形,並且能够绘制填充图形,如填充圆形,填充矩形等。下面前蒙受GD2中常用的填充图形的绘图方法进行介绍。

采取GD2函数能够绘制的图纸有各种,最宗旨的图形包罗条、圆、方形等。无论开辟人士绘制多么繁杂的图样,都是在那一个最宗旨的图片的底子上拓展强化的,独有精晓了最核心的图纸的绘图方法,工夫绘制出各类具有极其风格的图样。

GD简介

PHP 不只有限于只产生 HTML
的出口,还足以创立及操作各样分化格式的图像文件。PHP提供了一些放置的图像音信函数,也足以应用GD函数库成立新图像或拍卖已部分图像。这几天GD2库援救GIF、JPEG、PNG和WBMP等格式。另外还帮衬部分FreeType、Type1等字体库。

  • JPEG
    是一种压缩正式的名字,常常是用来囤积照片恐怕存款和储蓄具备丰盛色彩和色彩档期的顺序的图像。这种格式使用了有损压缩。

  • PNG 是可移植的互连网图像,对图像采取了无损压缩正式。

  • GIF 原义是“图像交换格式”,是一种基于LZW算法的连日色调的无损压缩格式

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

在GD第22中学能够分级选用imageline()函数、imagearc()函数和imagerectangle()函数绘制直线,圆形和艺术。

在PHP中开创贰个图像应该形成如下所示的4个步骤:
  1. 创造七个背景图像(也叫画布),以往的操作都基于此背景图像。

  2. 在背景上制图图像轮廓或输入文本。

  3. 输出最后图形

  4. 放活财富

<?php       
    //1. 创建画布 
    $im = imageCreateTrueColor(200, 200);       //建立空白背景
    $white = imageColorAllocate ($im, 255, 255, 255);   //设置绘图颜色
    $blue  = imageColorAllocate ($im, 0, 0, 64);
    //2. 开始绘画
    imageFill($im, 0, 0, $blue);                            //绘制背景
    imageLine($im, 0, 0, 200, 200, $white);         //画线
    imageString($im, 4, 50, 150, 'Sales', $white);      //添加字串
    //3. 输出图像
    header('Content-type: image/png');
    imagePng ($im);     //以 PNG 格式将图像输出
    //4. 释放资源
    imageDestroy($im);  
?>

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

上边将介绍这么些函数的选用方法:

画布管理

  • imagecreate — 新建贰个基于调色板的图像

resource imagecreate ( int x_size, int y_size )

本函数用来树立空新画布,参数为图片大小,单位为像素 (pixel)。援救256色。

  • imagecreatetruecolor — 新建三个真彩色图像

resource imagecreatetruecolor ( int x_size, int y_size )

新建八个真彩色图像画布 ,需求 GD 2.0.1 或更加高版本,不可能用来 GIF
文件格式。

  • imagedestroy — 销毁一图像

bool imagedestroy ( resource image ) 

imagedestroy() 释放与 image 关联的内存。

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

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

安装颜色

  • imagecolorallocate — 为一幅图像分配颜色

语法:int imagecolorallocate ( resource image, int red, int green, int blue )

imagecolorallocate() 重返贰个标记符,代表了由给定的 QX56GB
成分结合的颜料。red,green 和 blue 分别是所急需的颜色的红,绿,蓝成分。

这几个参数是 0 到 255 的大背头也许十六进制的 0x00 到 0xFF。

imagecolorallocate() 必须被调用以成立每一样用在 image
所表示的图像中的颜色

$im    = imagecreatetruecolor(100, 100); //创建画布的大小为100x100
$red   = imagecolorallocate($im, 255, 0, 0); //由十进制整数设置一个颜色
$white = imagecolorallocate($im, 0xFF, 0xFF, 0xFF); // 十六进制方式
  • imagepolygon — 画叁个多边形

语法:bool imagepolygon ( resource image, array points, int num_points, int color )

imagepolygon() 在图像中成立三个多边形。points 是二个 PHP
数组,包括了多方形的顺序顶点坐标,即 points[0] = x0,points[1] =
y0,points[2] = x1,points[3] = y1,就那样推算。num_points
是终端的总量。

  • imagefilledpolygon — 画一多边形并填写

语法:bool imagefilledpolygon ( resource image, array points, int num_points, int color )

imagefilledpolygon() 在 image 图像中画三个填写了的多边形。points
参数是二个按顺序满含有多方面形各顶点的 x 和 y 坐标的数组。 num_points
参数是极限的总和,必须大于 3。

imagefilledarc() 在 image 所表示的图像中以 cx,cy(图像左上角为 0,
0)画一椭圆弧。成功时重临 TRUE, 或许在退步时再次回到 FALSE.w 和 h
分别钦点了椭圆的宽和高,s 和 e 参数以角度钦点了发轫和截止点。style
能够是下列值按位或(OSportage)后的值:

imageline()函数用color颜色在图像image中从坐标(x1,y1)到(x2,y2)(图像左上角为(0,0))绘制一条线条。

扭转图像

  • imagegif — 以 GIF 格式将图像输出到浏览器或文件

语法:bool imagegif (resource image [,string filename] ) 
  • imagejpeg — 以 JPEG 格式将图像输出到浏览器或文件

语法:bool imagejpeg (resource image [,string filename [, int quality]] ) 
  • imagepng — 以 PNG 格式将图像输出到浏览器或文件

语法:bool imagepng (resource image [,string filename] )
  • imagewbmp — 以 WBMP 格式将图像输出到浏览器或文件

语法:bool imagewbmp (resource image [, string filename [, int foreground]] ) 

IMG_ARC_php使用GD2绘制几何图形示例,php使用gd2绘制基本图形示例。PIE
IMG_ARC_CHORD
IMG_ARC_NOFILL
IMG_ARC_EDGED

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

绘图图像

  • imagefill — 区域填充

语法:bool imagefill(resource image,int x,int y, int color) 

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

  • imagesetpixel — 画一个纯粹像素

语法:bool imagesetpixel ( resource image, int x, int y, int color ) 

imagesetpixel() 在 image 图像中用 color 颜色在 x,y 坐标(图像左上角为
0,0)上画贰个点。

  • imageline — 画一条线条

语法:bool imageline ( resource image, int x1, int y1, int x2, int y2, int color ) 

imageline() 用 color 颜色在图像 image 中从坐标 x1,y1 到
x2,y2(图像左上角为 0, 0)画一条线条。

  • imagerectangle — 画叁个矩形

语法:bool imagerectangle ( resource image, int x1, int y1, int x2, int y2, int col )

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

  • imagefilledrectangle — 画一矩形并填写

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

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

  • imageellipse — 画几个椭圆

语法:bool imageellipse ( resource image, int cx, int cy, int w, int h, int color )

imageellipse() 在 image 所代表的图像中画二个主干为 cx,cy(图像左上角为
0, 0)的椭圆。w 和 h 分别钦点了椭圆的上涨的幅度和冲天,椭圆的水彩由 color
钦命。

  • imagefilledellipse — 画一椭圆并填写

语法: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。

  • imagearc — 画椭圆弧

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

imagearc() 以 cx,cy(图像左上角为 0, 0)为着力在 image
所表示的图像中画三个椭圆弧。w 和 h
分别钦命了椭圆的升幅和中度,初叶和终结点以 s 和 e
参数以角度钦命。0°位于三点钟职务,以顺时针方向美术。

  • imagefilledarc — 画一椭圆弧且填充

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
能够是下列值按位或(OOdyssey)后的值:
IMG_ARC_PIE IMG_ARC_CHORD
IMG_ARC_NOFILL IMG_ARC_EDGED
IMG_ARC_PIE 和 IMG_ARC_CHO牧马人D 是排斥的;IMG_ARC_CHO兰德凯雷德D
只是用直线连接了开端和甘休点,IMG_ARC_PIE
则发出圆形边界。IMG_ARC_NOFILL
指明弧或弦唯有大致,不填充。IMG_ARC_EDGED
指明用直线将起首和结束点与主导点持续,和 IMG_ARC_NOFILL
一同行使是画饼状图轮廓的好方法(而不用填充)。

美高梅开户网址 ,IMG_ARC_PIE 和 IMG_ARC_CHO奥迪Q7D 是排斥的;IMG_ARC_CHOEscortD
只是用直线连接了序幕和停止点,IMG_ARC_PIE
则发出圆形边界(假诺七个都用,IMG_ARC_CHORD生效)。IMG_ARC_NOFILL
指明弧或弦独有大约,不填充。IMG_ARC_EDGED
指明用直线将胚胎和甘休点与基本点不断,和 IMG_ARC_NOFILL
一齐利用是画饼状图轮廓的好方式(而不用填充)。

image : 表示图像的handle
cx,cy 原点坐标(0,0)为图片的左上角,参数cx,cy为椭圆圆心坐标
w,h分别为水平轴长和垂直轴长
s,e分别为起首角与停止角
color为弧线的颜色

在图像中绘制文字

  • imagestring — 水平地画一行字符串

语法:bool imagestring ( resource image, int font, int x, int y, string s, int col )

imagestring() 用 col 颜色将字符串 s 画到 image 所代表的图像的 x,y
坐标处(那是字符串左上角坐标,整幅图像的左上角为 0,0)。假使 font 是
1,2,3,4 或 5,则使用内置字体。

  • imagestringup — 垂直地画一行字符串

语法:bool imagestringup ( resource image, int font, int x, int y, string s, int col )
  • imagechar — 水平地画四个字符

语法:bool imagechar ( resource image, int font, int x, int y, string c, int color )

imagechar() 将字符串 c 的首先个字符画在 image 钦定的图像中,其左上角位于
x,y(图像左上角为 0, 0),颜色为 color。借使 font 是 1,2,3,4 或
5,则接纳内置的书体(越来越大的数字对应于越来越大的字体)。

  • imagecharup — 垂直地画贰个字符

语法:bool imagecharup ( resource image, int font, int x, int y, string c, int color )

imagecharup() 将字符 c 垂直地画在 image 钦定的图像上,位于
x,y(图像左上角为 0, 0),颜色为 color。倘若 font 为 1,2,3,4 或
5,则运用内置的字体。

  • imagettftext — 用 TrueType 字体向图像写入文本

语法 :array imagettftext ( resource image, float size, float angle, int x, int y, int color, string fontfile, string text ) 
  • imagestring()用 col 颜色将字符串 s 垂直地画到 image 所表示的图像的
    x, y 座标处(图像的左上角为 0, 0)。就算 font 是 1,2,3,4 或
    5,则接纳内置字体。

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

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

验证码的绘图和行使

验证码(CAPTCHA)是“Completely Automated Public Turing test to tell
Computers and Humans
Apart”(全自动区分计算机和人类的图灵测验)的缩写,是一种有别于用户是Computer和人的公物活动程序。

采纳验证码的目标:可防止范:恶意破解密码、刷票、论坛灌水,有效堤防有个别红客对某一个一定注册用户用特定程序暴力破解情势开始展览持续的登录尝试。
验证码是今天数不胜数网址畅通的章程(例如招引客商业银行行的网络个人银行,百度社区)。
验证码的样式也是千奇百态,本节珍视教学使用GD库绘制图像的方法。

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

imagerectangle()函数以color颜色在image图像中绘制三个矩形,其左上角坐标为(
x1,y1),右下角坐标为( x2, y2)。图像的左上角坐标为(0,0)

统一策动验证码的步子

gd库支持

  1. 生成底图
    发出一块图片
    始建画布
    $img=imagecreatetruecolor(‘x’,’y’)
    常备不懈颜色
    $bgcolor=imagecolorallocate($img,255,255,255)
    填充颜色
    imagefill($image,’x’,’y’,$bgcolor)

  2. 在图纸中变化干扰因素
    在底图上海展览中心示随机数字
    打算字体颜色
    可随机
    $fontcolor=imagecolorallocate($img,0,0,0);
    居安虑危字体大小
    $fontsize=10
    预备字体内容
    $content = rand(0,9)
    将内容填充到画布上
    imagestring($img,$fontsize,$x,$y,$content,$fontcolor)
    小心:调节好字体大小与分布,幸免字体重叠或展现不全
    为验证码扩展困扰因素,困扰的点或线
    筹划点的水彩
    可随机
    $pointcolor=imagecolorallocate($img,175,175,175)
    画点
    imagesetpixel($img,$x,$y,$pointcolor)
    追加线干扰因素
    未焚徙薪颜色
    可随机
    $linecolor=imagecolorallocate($img,90,90,90)
    画线
    imageline($img,x,y,x,y,$linecolor)
    专注:困扰因素需求求调整好颜色,防止本末倒置

  3. 转换验证内容
    浮动无规律内容
    数字、字母、数字加字母
    服务器保存改内容

  4. 生成验证码图片
    输出
    header(‘content-type:image/png’)
    imagepng($rimg)
    销毁财富
    imagedestroy($img)

  5. 校验认证内容
    在服务器记录验证码消息,便于用户输入后做校验
    session_start()
    非得处于脚本最最上端
    多服务器景况,要求思考集中管理session消息
    用户输入相比服务器保存内容

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

譬喻说利用以上函数,分别绘制直线、正圆和长方形,並且以青黄作为线条的本色,代码如下

PHP图片管理(缩放、裁剪、水印、旋转和扭转)

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

<?php
  header("Content-type: image/png");//将图像输出到浏览器
  $img = imagecreate(560, 200);//创建一个560X200像素的图像
  $bg = imagecolorallocate($img, 0, 0, 255);//设置图像的背景颜色
  $white = imagecolorallocate($img, 255, 255, 255);//设置绘制图像的线的颜色
  imageline($img, 20, 20, 150, 180, $white);//绘制一条线
  imagearc($img, 250, 100, 150, 150, 0, 360, $white);//绘制一个圆
  imagerectangle($img, 350, 20, 500, 170, $white);//绘制一个正方形
  imagepng($img);//以PNG格式输出图像
  imagedestroy($img);//释放资源

图表背景管理

从钦定的图样文件或
UENVISIONL地址来新建二个图像。成功则赶回贰个图像标志符,失败时回来三个空字符串,何况输出一条错误音信。

出于格式不一致,则供给各自选择对应图片背景管理函数。

  • 从 PNG 文件或 URL 新建一图像

resource imagecreatefrompng ( string filename )
  • 从 JPEG 文件或 UWranglerL 新建一图像

resource imagecreatefromjpeg ( string filename ) 
  • 从 GIF 文件或 U昂CoraL 新建一图像

resource imagecreatefromgif ( string filename )
  • 从 WBMP 文件或 U奇骏L 新建一图像

resource imagecreatefromwbmp ( string filename )

其余图像管理函数:

  • 取得图像宽度

int imagesx ( resource image )
  • 获得图像中度

int imagesy ( resource image ) 
  • 获取图像大小、类型等音信

array getimagesize ( string $filename [, array &$imageinfo ] )

譬喻:应用如上函数,绘制填充圆形和填充圆锥形,代码如下

运维结果如下:

图形缩放和剪裁

bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )

重采样拷贝部分图像并调度大小,是将一幅图像中的一块长方形区域拷贝到另叁个图像中,平滑地插入像素值,由此,特别是,减小了图像的大大小小而照旧保持了庞然大物的清晰度。成功时回来
TRUE, 或然在波折时回来 FALSE。个中dst_image 和 src_image
分别是目的图像和源图像的标志符。

<?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);//释放资源

美高梅开户网址 1

增添图片水印

bool imagecopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )

拷贝图像的一有的(也正是图片合成)。
将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为
src_h 的一某个拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的任务上。

运作结果如下所示

愈来愈多关于PHP相关内容感兴趣的读者可查阅本站专项论题:《PHP图形与图片操作技能汇总》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《PHP网络编制程序工夫总计》、《PHP数组(Array)操作技艺大全》、《php字符串(string)用法计算》、《php+mysql数据库操作入门教程》及《php常见数据库操作技艺汇总》

图表旋转和扭转

resource imagerotate ( resource $src_im , float $angle , int $bgd_color [, int $ignore_transparent ] )

用给定角度旋转图像
将 src_im 图像用给定的 angle 角度旋转。bgd_color
钦点了旋转后不曾掩饰到的有的的颜色。
旋转的中坚是图像的中坚,旋转后的图像会按比例收缩以契合对象图像的大大小小——边缘不会被剪去。
如果 ignore_transparent
被设为非零值,则透明色会被忽略(不然会被封存)。

Have a try

  1. 行使GD库达成验证码?
  2. 福寿无疆在一张图片上增加文字水印。
  3. 贯彻一张图纸的等比降低二分之一的管理(如a.jpg图片会转移贰个s_a.jpg的小图);

美高梅开户网址 2

指望本文所述对大家PHP程序设计有所支持。

更加多关于PHP相关内容感兴趣的读者可查看本站专项论题:《PHP图形与图片操作技艺汇总》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《PHP互连网编制程序手艺计算》、《PHP数组(Array)操作本事大全》、《php字符串(string)用法计算》、《php+mysql数据库操作入门教程》及《php常见数据库操作技艺汇总》

您或者感兴趣的小说:

  • PHP中开创图像并绘制文字的事例
  • PHP中绘制图像的局地函数总括
  • PHP中央银行使GD库绘制折线图
    折线计算图的绘图方法
  • 采用php绘制饼状图的完成代码
  • php使用Jpgraph绘制复杂X-Y坐标图的措施
  • php GD绘制24时辰柱状图
  • 哪些利用php绘制在图纸上的正余弦曲线
  • php使用Jpgraph绘制3D饼状图的点子
  • PHP完结绘制3D扇形计算图及图片缩放实例
  • php使用GD2绘制几何图形示例
  • 使用php输出分裂的心形图案
  • php完成的秋节博饼游戏之绘制骰子图案功用示例

期待本文所述对我们PHP程序设计有着扶助。

你只怕感兴趣的篇章:

  • PHP中开创图像并绘制文字的例子
  • PHP中绘制图像的一部分函数总计
  • PHP中采用GD库绘制折线图
    折线总结图的绘图方法
  • 利用php绘制饼状图的贯彻代码
  • php使用Jpgraph绘制复杂X-Y坐标图的不二等秘书技
  • php GD绘制24钟头柱状图
  • 怎么利用php绘制在图纸上的正余弦曲线
  • php使用Jpgraph绘制3D饼状图的主意
  • PHP达成绘制3D扇形总括图及图片缩放实例
  • php使用gd2绘制基本图形示例(直线、圆、长方形)
  • 选用php输出分裂的心形图案
  • php完结的仲八月节博饼游戏之绘制骰子图案成效示例

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图