php 用圖片處理函數(shù)畫(huà)一張圖
一起來(lái)看看下面有一張圖:
我們?cè)撛趺窗堰@張圖給畫(huà)出來(lái)呢。
我們按照步驟能夠分析出來(lái):
????1.畫(huà)圖
????2.準(zhǔn)備好畫(huà)這張圖需要的顏色
????3.填充背景顏色
????4.畫(huà)兩條對(duì)角線
????5.在上面畫(huà)一個(gè)圓
????6.在圓上面畫(huà)一個(gè)矩型
????7.保存圖片
????8.銷(xiāo)毀資源
一、我們根據(jù)這張圖推出出來(lái)步驟。我們來(lái)分析需要使用到的函數(shù):
//使用imagecreate函數(shù)創(chuàng)建圖片,返回資源 $img = imagecreate(500,500);
二、圖片創(chuàng)建完成我們需要向圖片資源填加顏色,需要使用到函數(shù)
$顏色變量 = imagecolorallocate ( resource $圖片資源 , int $紅 , int $綠 , int $藍(lán) )
紅、綠、藍(lán)是計(jì)算機(jī)里面操作圖片的三個(gè)基本色。由這三個(gè)顏色來(lái)組合成我們?nèi)庋鬯吹降乃蓄伾?/p>
因此 imagecolorallocate 先輸入圖片資源,操作這個(gè)資源。為這個(gè)圖片資源準(zhǔn)備顏色。
就相當(dāng)于在畫(huà)畫(huà)的時(shí)候,先把畫(huà)布準(zhǔn)備好,再準(zhǔn)備顏料。
根據(jù)這張圖,我們需要準(zhǔn)備出來(lái)的顏色有:
????1.綠
????2.藍(lán)
????3.黑
????4.棕
按照計(jì)算機(jī)的配色原則分配的話(huà),我們下面的顏色分配的代碼就要寫(xiě)成下面的樣子:
//紅 $red = imagecolorallocate($img, 255, 0, 0); //綠 $green = imagecolorallocate($img, 0, 255, 0); //藍(lán) $blue = imagecolorallocate($img, 0, 0, 255); //棕 $yellow = imagecolorallocate($img, 121, 72, 0);
這中圖片中需要用到的幾個(gè)顏色的色值。
三、 將顏色添加到背景進(jìn)行填充
imagefilledrectangle ( resource $圖片資源 , int $點(diǎn)1x軸, int $點(diǎn)1y軸 , int $點(diǎn)2x軸 , int $點(diǎn)2y軸 , int $color )
這個(gè)函數(shù)需要涉及到幾何的一點(diǎn)點(diǎn)知識(shí)。
????1.一個(gè)點(diǎn)由x 坐標(biāo)和y 坐標(biāo)組成一個(gè)點(diǎn)
????2.兩個(gè)點(diǎn)可以組成一個(gè)直線
????3.這條線如果不是水平或者垂直的線可以組成一個(gè)矩形
如下圖:
點(diǎn)1和點(diǎn)2,可以變成一個(gè)矩形。因此,我們輸出兩個(gè)坐標(biāo)點(diǎn),可以對(duì)畫(huà)布進(jìn)行填充。
如果要填充整個(gè)畫(huà)布的話(huà):
點(diǎn)1 為x軸為畫(huà)布的0位置,點(diǎn)1的y軸也為畫(huà)布的0位置。
點(diǎn)2 為x軸為畫(huà)布的500位置,點(diǎn)2的y軸也為畫(huà)布的500位置。
四、畫(huà)兩條對(duì)角線
畫(huà)一條對(duì)角線,對(duì)角線是紅色。
第一條對(duì)角線的坐標(biāo)為0和0,500和500
第二條對(duì)角線的坐標(biāo)為500和0,0和500
imageline($img, 0, 0, 500, 500, $red); imageline($img, 500, 0, 0, 500, $blue);
五、在上面畫(huà)一個(gè)圓
bool imagefilledellipse ( resource $圖片資源 , int $圓心x , int $圓心y , int $圓的寬 , int $圓的高 , int $圓的顏色 ) imagefilledellipse($img, 250, 250, 200, 200, $yellow);
操作這個(gè)資源,寫(xiě)上圓心的坐標(biāo)。然后寫(xiě)上長(zhǎng)和寬。如果長(zhǎng)寬一致為正圓,不一致則為橢圓。
六、在圓上面畫(huà)一個(gè)矩型
imagefilledrectangle($img, 200, 200, 300, 300, $blue);
這個(gè)我們?cè)谏厦嬉粋€(gè)中講過(guò),我們就不細(xì)說(shuō)了。
七、保存圖片
bool imagejpeg ( resource $image [, string $filename])
八、銷(xiāo)毀圖片資源
imagedestroy($img);
我們來(lái)看一下最終組合出來(lái)的代碼:
<?php //創(chuàng)建圖片 $img = imagecreatetruecolor(500, 500); //分配顏色 $red = imagecolorallocate($img, 255, 0, 0); $green = imagecolorallocate($img, 0, 255, 0); $blue = imagecolorallocate($img, 0, 0, 255); $pur = imagecolorallocate($img, 255, 0, 255); $yellow = imagecolorallocate($img, 121, 72, 0); //填充背景 imagefilledrectangle($img, 0, 0, 500, 500, $green); //畫(huà)對(duì)角線 imageline($img, 0, 0, 500, 500, $red); imageline($img, 500, 0, 0, 500, $blue); //畫(huà)圓 imagefilledellipse($img, 250, 250, 200, 200, $yellow); //圓中間畫(huà)矩形 imagefilledrectangle($img, 200, 200, 300, 300, $blue); //保存圖片,圖片名為haha.jpg imagejpeg($img, 'haha.jpg'); //銷(xiāo)毀資源 imagedestroy($img); ?>