1. 程式人生 > >畫布繪製

畫布繪製

1.整個網頁的輸出是以圖片格式進行輸出的

header('content-type:image/png')

header ( 'Content-Type: image/gif' );

header ( 'Content-Type: image/jpeg' );

2.建立畫布(在記憶體中存放)

resource imagecreatetruecolor  ( int $width  , int $height  )     新建一個真彩色影象 
返回一個影象識別符號,代表了一幅大小為 width  和 height  的黑色影象。 
返回值:成功後返回圖象資源,失敗後返回 FALSE  。

<?php
header('content-type:image/png');
$img = imagecreatetruecolor(200,100);

 3.建立顏色(顏色管理)

int imagecolorallocate  ( resource $image  , int $red  , int $green  , int $blue  )   為一幅影象分配顏色 
red , green  和 blue  分別是所需要的顏色的紅,綠,藍成分。這些引數是 0 到 255 的整數或者十六進位制的 0x00 到 0xFF4

$color = imagecolorallocate($img, 255, 0, 0);

4.填充區域

bool imagefill  ( resource $image  , int $x  , int $y  , int $color  )  區域填充
image  影象的座標 x , y (影象左上角為 0, 0)處用 color  顏色執行區域填充(即與 x, y 點顏色相同且相鄰的點都會被填充)
.

imagefill($img, 0, 0, $color);


5.繪製圖形(點)

imagesetpixel()  在 image  影象中用 color  顏色在 x , y  座標(影象左上角為 0,0)上畫一個點。 
bool imagesetpixel  ( resource $image  , int $x  , int $y  , int $color  )

程式碼(隨機畫10個點):

$color = imagecolorallocate($img, 0, 0, 0);
//隨機畫10個點
for($i=0;$i<10;$i++){
	$x = rand(0,200);
	$y = rand(0,100);
	imagesetpixel($img, $x, $y, $color);
}

6.繪製圖形(線)

imageline()  用 color  顏色在影象 image  中從座標 x1 , y1  到 x2 , y2 (影象左上角為 0, 0)畫一條線段。 
bool imageline  ( resource $image  , int $x1  , int $y1  , int $x2  , int $y2  , int $color  )

程式碼(隨機畫10條線):

$color = imagecolorallocate($img,0,0,255);
for($i=0;$i<10;$i++){
	$x1 = rand(0,200);
	$y1 = rand(0,100);
	$x2 = rand(0,200);
	$y2 = rand(0,100);
	imageline($img, $x1, $y1, $x2, $y2, $color);
}

7.畫一個矩形

imagefilledrectangle()  在 image  影象中畫一個用 color  顏色填充了的矩形,其左上角座標為 x1 , y1 ,右下角座標為 x2 , y2 。0, 0 是影象的最左上角。
bool imagefilledrectangle  ( resource $image  , int $x1  , int $y1  , int $x2  , int $y2  , int $color  )

$color = imagecolorallocate($img,0,255,0);
// imagerectangle($img, 50, 50, 100, 100, $color);
imagefilledrectangle($img, 50, 50, 100, 100, $color);

8.繪製文字

array imagettftext  ( resource $image  , float $size  , float $angle  , int $x  , int $y  , int $color  , string $fontfile  , string $text  )

size   :字型的尺寸。根據 GD 的版本,為畫素尺寸(GD1)或點(磅)尺寸(GD2)。
angle   :角度製表示的角度,0 度為從左向右讀的文字。更高數值表示逆時針旋轉。例如 90 度表示從下向上讀的文字。
由 x , y  所表示的座標定義了第一個字元的基本點(大概是字元的左下角)。
color   :顏色索引
fontfile   :是想要使用的 TrueType 字型的路徑。 
text   :UTF-8 編碼的文字字串。

$text = 'hello';
$color = imagecolorallocate($img,255,0,255);
$font = "simsunb.ttf";
imagettftext($img, 20, 0, 10, 50, $color, $font, $text);

9.輸出影象

bool imagepng  ( resource $image  [, string $filename  ] )
將 GD 影象流( image )以 PNG 格式輸出到標準輸出(通常為瀏覽器),或者如果用 filename  給出了檔名則將其輸出到該檔案。

bool imagegif  ( resource $image  [, string $filename  ] )

bool imagejpeg  ( resource $image  [, string $filename  [, int $quality  ]] )

imagepng($img);

10.銷燬影象(釋放佔用的資源)

bool imagedestroy  ( resource $image  )     銷燬一影象
釋放與 image  關聯的記憶體

imagedestroy($img);