PHP中繪制圖像的一些函數(shù)總結(jié)
在PHP中繪制圖像的函數(shù)非常豐富,包括點(diǎn)、線、各種幾何圖形等可以想象出來(lái)的平面圖形,都可以通過(guò)PHP中提供的各種畫(huà)圖函數(shù)完成。我們?cè)谶@里介紹一些常用的圖像繪制,如果使用我們沒(méi)有介紹過(guò)的函數(shù),可以參考手冊(cè)實(shí)現(xiàn)。另外,這些圖形繪制函數(shù)都需要使用畫(huà)布資源,并在畫(huà)布中的位置通過(guò)坐標(biāo)(原點(diǎn)是在畫(huà)布左上角的起始位置,以像素為單位,沿著X軸正方向向右延伸,Y軸正方向向下延伸)決定,并且還可以通過(guò)函數(shù)的最后一個(gè)參數(shù),設(shè)置每個(gè)圖形的顏色。畫(huà)布中的坐標(biāo)系統(tǒng)如圖所示。
一、函數(shù)圖形區(qū)域填充imageFill()
通過(guò)PHP僅僅繪制出只有邊線的幾何圖形是不夠的,還可以使用對(duì)應(yīng)的填充函數(shù),完成圖形區(qū)域的填充。除了每個(gè)圖形都有對(duì)應(yīng)的填充函數(shù)之外,還可以使用imageFill()函數(shù)實(shí)現(xiàn)區(qū)域填充。該函數(shù)的語(yǔ)法格式如下:
bool imagefill(resource $image,int $x ,int $y,int $color) //區(qū)域填充
該函數(shù)在參數(shù)$image代表的圖像上,相對(duì)于圖像左上角(0,0)坐標(biāo)處,從坐標(biāo)($x,$y)處用參數(shù)$color指定的顏色執(zhí)行區(qū)域填充。與坐標(biāo)($x,$y)點(diǎn)顏色相同且相鄰的點(diǎn)都會(huì)被填充。例如在下面的示例中,將畫(huà)布的背景設(shè)置為紅色。代碼如下所示:
<?php
$im = imagecreatetruecolor(100, 100); //創(chuàng)建100*100大小的畫(huà)布
$red = imagecolorallocate($im, 255, 0, 0); //設(shè)置一個(gè)顏色變量為紅色
imagefill($im, 0, 0, $red); //將背景設(shè)為紅色
header('Content-type:image/png'); //通知瀏覽器這不是文本而是一個(gè)圖片
imagepng($im); //生成PNG格式的圖片輸出給瀏覽器
imagedestroy($im); //銷(xiāo)毀圖像資源,釋放畫(huà)布占用的內(nèi)存空間
?>
二、繪制點(diǎn)和線imageSetPixel()、imageline()
畫(huà)點(diǎn)和線是繪制圖像中最基本的操作,如果靈活使用,可以通過(guò)它們繪制出千變?nèi)f化的圖像。在PHP中,使用imageSetPixel()函數(shù)在畫(huà)布中繪制一個(gè)單一像素的點(diǎn),并且可以設(shè)置點(diǎn)的顏色。其函數(shù)的原型如下所示:
bool imagesetpixel(resource $image,int $x,int $y,int $color) //畫(huà)一個(gè)單一像素
該函數(shù)在第一個(gè)參數(shù)$image中提供的畫(huà)布上,距離圓點(diǎn)分別為$x和$y的坐標(biāo)位置,繪制一個(gè)顏色為$color的一個(gè)像素點(diǎn)。理論上使用畫(huà)點(diǎn)函數(shù)便可以畫(huà)出所需要的所有圖形,也可以使用其他的繪圖函數(shù)。如果需要繪制一條線段,可以使用imageline()函數(shù),其語(yǔ)法格式如下所示:
bool imageline(resource $image,int $x1,int $y1,int $x2,int $y2,int $color) //畫(huà)一條線段
我們都知道兩點(diǎn)確定一條線段,所以該函數(shù)使用$color顏色在圖像$image中,從坐標(biāo)($x1,$y1)開(kāi)始到($x2,$y2)坐標(biāo)結(jié)束畫(huà)一條線段。
三、繪制矩形imageRectangle()、imageFilledRectangle()
可以使用imageRectangle()函數(shù)繪制矩形,也可以通過(guò)imageFilledRectangle()函數(shù)繪制一個(gè)矩形并填充。這兩個(gè)函數(shù)的語(yǔ)法格式如下所示:
bool imagerectangle(resource $image,int $x1 , int $y1,int $x2,int $y2,int $color) //畫(huà)一個(gè)矩形
bool imagefilledrectangle(resource image,int $x1 ,int $y1 ,int $x2 ,int $y2,int $color) //畫(huà)一個(gè)矩形并填充
這兩個(gè)函數(shù)的行為類(lèi)似,都是在$image圖像中畫(huà)一個(gè)矩形,只不過(guò)前者是使用$color參數(shù)指定矩形的邊線顏色,而后者則是使用這個(gè)顏色填充矩形。相對(duì)于圖像左上角的(0,0)位置,矩形的左上角坐標(biāo)為($x1,$y1),右下角坐標(biāo)為($x2,$y2)。
四、繪制多邊形imagePolygon()、imagefilledpolygon()
可以使用imagePolygon()函數(shù)繪制一個(gè)多邊形,也可以通過(guò)imageFilledPolygon()函數(shù)繪制一個(gè)多邊形并填充。這兩個(gè)函數(shù)的語(yǔ)法格式如下:
bool imagepolygon(resource $image,array $points,int $num_points,int $color) //畫(huà)一個(gè)多邊形
bool imagefilledpolygon(resource $image ,array $points,int $num_points,int $color) //畫(huà)一個(gè)多邊形并填充
這兩個(gè)函數(shù)的行為類(lèi)似,都是在$image圖像中畫(huà)一個(gè)多邊形,只不過(guò)前者是使用$color參數(shù)指定多邊形的邊線顏色,而后者則是使用這個(gè)顏色填充多邊形。第二個(gè)參數(shù)$points是一個(gè)PHP數(shù)組,包含了多邊形的各個(gè)頂點(diǎn)坐標(biāo)。即points[0]=x0,points[1]=y0,points[2]=x1,points[3]=y1,依此類(lèi)推。第三個(gè)參數(shù)$num_points是頂點(diǎn)的總數(shù),必須大于3.
五、繪制橢圓imageEllipse()、imageFilledElipse()
可以使用imageEllipse()函數(shù)繪制一個(gè)橢圓,也可以通過(guò)imageFilledEllipse()函數(shù)繪制一個(gè)橢圓并填充。這兩個(gè)函數(shù)的語(yǔ)法格式如下:
bool imageellipse(resource $image,int $cx,int $cy,int $w,int $h,int $color) //畫(huà)一個(gè)橢圓
bool imagefilledellipse(resource $image,int $cx,int $cy,int $w,int $h,int $color) //畫(huà)一個(gè)橢圓填充
這兩個(gè)函數(shù)行為類(lèi)似,都是在$image圖像中畫(huà)一個(gè)橢圓,只不過(guò)前者是使用$color參數(shù)指定橢圓形的邊線顏色,而后者則是使用它填充顏色。相對(duì)于畫(huà)布左上角坐標(biāo)(0,0),以($cx,$cy)坐標(biāo)為中心畫(huà)一個(gè)橢圓,參數(shù)$w和$h分別指定了橢圓的寬和高。如果成功則返回TRUE,失敗則返回FALSE。
六、繪制弧線imageArc()
前面介紹的3D扇形統(tǒng)計(jì)圖示例,就是使用繪制填充圓弧的函數(shù)實(shí)現(xiàn)的??梢允褂胕mageArc()函數(shù)繪制一條弧線,以及圓形和橢圓形。這個(gè)函數(shù)的語(yǔ)法格式如下:
bool imagearc(resource $image ,int $cx,int $cy,int $w,int $h,int $s,int $e ,int $color) //畫(huà)橢圓弧
相對(duì)于畫(huà)布左上角坐標(biāo)(0,0),該函數(shù)以($cx,$cy)坐標(biāo)為中心,在$image所代表的圖像中畫(huà)一個(gè)橢圓弧。其中參數(shù)$w和$h分別指定了橢圓的寬度和高度,起始點(diǎn)和結(jié)束點(diǎn)以$s和$e參數(shù)以角度指定。0º位于三點(diǎn)鐘位置,以順時(shí)針?lè)较蚶L畫(huà)。如果要繪制一個(gè)完整的圓形,首先要將參數(shù)$w和$h設(shè)置為相等的值,然后將起始角度$s設(shè)置為0,結(jié)束角度$e指定為360.如果需要繪制填充圓弧,可以查詢(xún)imageFilledArc()函數(shù)使用。
- 使用PHP生成二維碼的兩種方法(帶logo圖像)
- php圖像處理函數(shù)大全(推薦收藏)
- PHP輸出圖像imagegif、imagejpeg與imagepng函數(shù)用法分析
- PHP圖片裁剪函數(shù)(保持圖像不變形)
- PHP圖像處理之imagecreate、imagedestroy函數(shù)介紹
- PHP實(shí)現(xiàn)提取一個(gè)圖像文件并在瀏覽器上顯示的代碼
- 基于OpenCV的PHP圖像人臉識(shí)別技術(shù)
- PHP圖像識(shí)別技術(shù)原理與實(shí)現(xiàn)
- PHP GD庫(kù)生成圖像的幾個(gè)函數(shù)總結(jié)
- 解析php常用image圖像函數(shù)集
- PHP基于GD庫(kù)的圖像處理方法小結(jié)
- php實(shí)現(xiàn)的證件照換底色功能示例【人像摳圖/換背景圖】
相關(guān)文章
關(guān)于PHP內(nèi)存溢出問(wèn)題的解決方法
本篇文章是對(duì)PHP內(nèi)存溢出問(wèn)題的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06php 移除數(shù)組重復(fù)元素的一點(diǎn)說(shuō)明
PHP中移除數(shù)組重復(fù)元素用的函數(shù)是array_unique2008-11-11PHP開(kāi)發(fā)api接口安全驗(yàn)證操作實(shí)例詳解
這篇文章主要介紹了PHP開(kāi)發(fā)api接口安全驗(yàn)證操作,結(jié)合實(shí)例形式詳細(xì)分析了PHP開(kāi)發(fā)api接口安全驗(yàn)證的原理、操作技巧與注意事項(xiàng),需要的朋友可以參考下2020-03-03PHP實(shí)現(xiàn)算式驗(yàn)證碼和漢字驗(yàn)證碼實(shí)例
這篇文章主要介紹了PHP實(shí)現(xiàn)算式驗(yàn)證碼和漢字驗(yàn)證碼實(shí)例,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-03-03PHP使用ajax的post方式下載excel文件簡(jiǎn)單示例
這篇文章主要介紹了PHP使用ajax的post方式下載excel文件,結(jié)合簡(jiǎn)單示例形式分析了php后端Excel文件下載及前端ajax交互相關(guān)操作技巧,需要的朋友可以參考下2019-08-08