新聞中心

使用 PHP 繪制一個(gè)圖像通常需要以下 4 個(gè)步驟:
- 創(chuàng)建一個(gè)背景圖像,以后所有操作都是基于此背景;
- 在圖像上繪圖輪廓或者輸入文本;
- 輸出最終圖形;
- 清除內(nèi)存中所有資源。
繪制圖形函數(shù)都需要使用畫(huà)布資源,并在畫(huà)布中的位置通過(guò)坐標(biāo)(原點(diǎn)是該畫(huà)布左上角的起始位置,以像素為單位,沿著 X 軸正方向向右延伸,Y 軸正方向向下延伸)決定,而且還可以通過(guò)函數(shù)中的最后一個(gè)參數(shù),設(shè)置每個(gè)圖形的顏色。畫(huà)布中的坐標(biāo)系統(tǒng)如下所示。
圖:使用 PHP 繪制圖像的坐標(biāo)
1、區(qū)域填充
區(qū)域填充不可以用來(lái)繪制圖像,但它可以將一個(gè)已存在圖像的顏色替換為其它顏色。在 PHP 中通過(guò) imagefill() 函數(shù)來(lái)執(zhí)行區(qū)域填充,它的語(yǔ)法格式如下所示:
imagefill(resource $image, int $x, int $y, int $color)
其中,$image 為創(chuàng)建的圖像資源;$x 和 $y 為要設(shè)置顏色的橫縱坐標(biāo);$color 為要設(shè)置的顏色。
imagefill() 會(huì)將與坐標(biāo)(x,y)相鄰的顏色替換為 $color 設(shè)置的顏色。
【示例】使用 imagefill() 函數(shù)將一張圖片某個(gè)區(qū)域替換為藍(lán)色。
運(yùn)行結(jié)果如下圖所示:
圖:使用 imagefill() 函數(shù)進(jìn)行區(qū)域填充
2、繪制點(diǎn)和線
畫(huà)點(diǎn)和線是繪制圖像中最基本的操作,如果靈活使用,可以通過(guò)它們繪制出千變?nèi)f化的圖像。在 PHP 中,使用 imagesetpixel() 函數(shù)在畫(huà)布中繪制一個(gè)單一像素的點(diǎn),并且可以設(shè)置點(diǎn)的顏色,函數(shù)的語(yǔ)法格式如下:
imagesetpixel(resource $image, int $x, int $y, int $color)
該函數(shù)可以在第一個(gè)參數(shù) $image 提供的畫(huà)布中,在($x,$y)的坐標(biāo)位置上,繪制一個(gè)顏色為 $color 的一個(gè)像素點(diǎn)。在實(shí)際開(kāi)發(fā)中還可以通過(guò)循環(huán)和隨機(jī)數(shù)的結(jié)合來(lái)繪制更多的像素點(diǎn)。
如果需要繪制一條線段,則可以使用 imageline() 函數(shù),其語(yǔ)法格式如下:
imageline(resource $image, int $x1, int $y1, int $x2, int $y2, int $color)
我們都知道兩個(gè)點(diǎn)可以確定一條線段,所以該函數(shù)可以在 $image 提供的畫(huà)布中,從坐標(biāo)($x1,$y1)到坐標(biāo)($x2,$y2)繪制一條顏色為 $color 的線段。
【示例】使用 imagesetpixel() 和 imageline() 函數(shù)在畫(huà)布中繪制一些點(diǎn)和直線。
運(yùn)行結(jié)果如下圖所示:
圖:繪制隨機(jī)的點(diǎn)和線
3、繪制矩形
在 PHP 中我們可以使用 imagerectangle() 或者 imagefilledrectangle() 函數(shù)來(lái)繪制一個(gè)矩形,與 imagerectangle() 函數(shù)不同的是 imagefilledrectangle() 函數(shù)會(huì)在繪制完成矩形后填充矩形,它們的語(yǔ)法格式如下所示:
imagerectangle(resource $image, int $x1, int $y1, int $x2, int $y2, int $color)
imagefilledrectangle(resource $image, int $x1, int $y1, int $x2, int $y2, int $color)
這兩個(gè)函數(shù)的功能類似,都是在 $image 畫(huà)布中畫(huà)一個(gè)矩形,矩形的左上角坐標(biāo)為($x1,$y1),右下角坐標(biāo)為($x2,$y2),不同的是 imagerectangle() 是使用 $color 參數(shù)指定矩形的邊線顏色,而 imagefilledrectangle() 則是使用這個(gè)顏色填充矩形。
【示例】使用 imagerectangle() 和 imagefilledrectangle() 函數(shù)分別繪制一個(gè)矩形。
運(yùn)行結(jié)果如下圖所示:
圖:繪制矩形
4、繪制多邊形
學(xué)會(huì)了繪制矩形,那如果想要繪制三角形、五邊形等多邊形呢?在 PHP 中可以使用 imagepolygon() 函數(shù)來(lái)繪制一個(gè)多邊形;也可以使用 imagefilledpolygon() 來(lái)繪制并填充一個(gè)多邊形,它們的語(yǔ)法格式如下所示:
imagepolygon(resource $image, array $points, int $num_points, int $color)
imagefilledpolygon(resource $image, array $points, int $num_points, int $color)
這兩個(gè)函數(shù)都是可以在畫(huà)布 $image 中畫(huà)一個(gè)多邊形;第二個(gè)參數(shù) $points 是一個(gè)數(shù)組,包含了多邊形的各個(gè)頂點(diǎn)坐標(biāo),例如 $points[0]=x0,$points[1]=y0,$points[2]=x1,$points[3]=y1,依此類推;第三個(gè)參數(shù) $num_points 用來(lái)設(shè)置多邊形的頂點(diǎn)數(shù),必須大于 3;至于第四個(gè)參數(shù),imagepolygon() 函數(shù)會(huì)使用 $color 顏色來(lái)指定多邊形邊線的顏色,而 imagefilledpolygon() 則是使用 $color 來(lái)填充多邊形。
注意:$points 數(shù)組中的頂點(diǎn)坐標(biāo)數(shù)(坐標(biāo)是成對(duì)出現(xiàn)的)不得小于多邊形的頂點(diǎn)數(shù) $num_points。
【示例】使用 imagepolygon() 和 imagefilledpolygon() 函數(shù)結(jié)合隨機(jī)數(shù)繪制隨機(jī)的多邊形圖像。
運(yùn)行結(jié)果如下圖所示:
圖:繪制隨機(jī)的多邊形
5、繪制橢圓
在 PHP 中可以使用 imageellipse() 函數(shù)來(lái)繪制一個(gè)橢圓,或者使用 imagefilledellipse() 函數(shù)繪制并填充一個(gè)橢圓,它們的語(yǔ)法如下所示:
imageellipse(resource $image, int $cx, int $cy, int $width, int $height, int $color)
imagefilledellipse(resource $image, int $cx, int $cy, int $width, int $height, int $color)
這兩個(gè)函數(shù)都可以在畫(huà)布 $image 上繪制一個(gè)橢圓,其中 $cx 和 $cy 分別代表橢圓圓心的橫縱坐標(biāo);$width 和 $height 分別代表橢圓的寬度和高度;至于 $color,imageellipse() 用來(lái)指定橢圓邊線的顏色,而 imagefilledellipse() 則用 $color 顏色來(lái)填充橢圓。
【示例】分別使用 imageellipse() 和 imagefilledellipse() 函數(shù)來(lái)繪制橢圓。
運(yùn)行結(jié)果如下圖所示:
圖:繪制橢圓
6、繪制弧線
在 PHP 中可以使用 imagearc() 函數(shù)來(lái)畫(huà)出一條弧線或者圓形,也可以使用 imagefilledarc() 函數(shù)來(lái)繪制弧線或者圓形并填充,它們的語(yǔ)法格式如下所示:
imagearc(resource $image, int $cx, int $cy, int $width, int $height, int $start, int $end, int $color)
imagefilledarc(resource $image, int $cx, int $cy, int $width, int $height, int $start, int $end, int $color, int $style)
這兩個(gè)函數(shù)都可以在畫(huà)布 $image 上繪制一個(gè)橢圓弧,其中 $cx 和 $cy 分別為圓弧中心點(diǎn)的橫縱坐標(biāo);$width 和 $height 分別為圓弧的寬度和高度;$start 和 $end 分別代表圓弧的起點(diǎn)角度和終點(diǎn)角度,0° 為鐘表 3 點(diǎn)鐘的位置,以順時(shí)針?lè)较蜻f增;至于 $color 參數(shù),imagearc() 用來(lái)表示圓弧的線條顏色,而 imagefilledarc() 用來(lái)表示弧線區(qū)域的填充色;
imagefilledarc() 函數(shù)比 imagearc() 函數(shù)多了一個(gè) $style 參數(shù),它用來(lái)設(shè)置顏色的填充類型,可以是如下的值:
- IMG_ARC_PIE:普通填充,產(chǎn)生圓形邊界;
- IMG_ARC_CHORD:只使用直線連接起點(diǎn)和終點(diǎn),與 IMG_ARC_PIE 互斥;
- IMG_ARC_NOFILL:指明弧或弦只有輪廓,不填充;
- IMG_ARC_EDGED:用直線將起始和結(jié)束點(diǎn)與中心點(diǎn)相連,和 IMG_ARC_NOFILL 一起使用是畫(huà)餅狀圖輪廓的好方法。
【示例】分別使用 imagefilledarc() 和 imagearc() 函數(shù)繪制圓弧。
運(yùn)行結(jié)果如下所示:
圖:繪制弧線
文章標(biāo)題:PHP繪制圖像
文章網(wǎng)址:http://m.5511xx.com/article/coppojo.html


咨詢
建站咨詢
