今天就跟大家聊聊有關(guān)PHP中的圓形餅圖怎么利用GD庫創(chuàng)建,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
作為一家“創(chuàng)意+整合+營銷”的成都網(wǎng)站建設(shè)機構(gòu),我們在業(yè)內(nèi)良好的客戶口碑。創(chuàng)新互聯(lián)提供從前期的網(wǎng)站品牌分析策劃、網(wǎng)站設(shè)計、做網(wǎng)站、成都網(wǎng)站設(shè)計、創(chuàng)意表現(xiàn)、網(wǎng)頁制作、系統(tǒng)開發(fā)以及后續(xù)網(wǎng)站營銷運營等一系列服務(wù),幫助企業(yè)打造創(chuàng)新的互聯(lián)網(wǎng)品牌經(jīng)營模式與有效的網(wǎng)絡(luò)營銷方法,創(chuàng)造更大的價值。在PHP中,有一些簡單的圖像函數(shù)是可以直接使用的,但大多數(shù)要處理的圖像,都需要在編譯PHP時加上GD庫。除了安裝GD庫之外,在PHP中還可能需要其他的庫,這可以根據(jù)需要支持哪些圖像格式而定。不同的GD版本支持的圖像格式不完全一樣,新的GD庫版本支持GIF、JPEG、PNG、WBMP、XBM等格式的圖像文件,此外還支持一些如FreeType、Type 1等字體庫。通過GD庫中的函數(shù),可以完成各種點、線、幾何圖形、文本及顏色的操作處理,也可以創(chuàng)建或讀取多種格式的圖像文件。
在PHP中,通過GD庫處理圖像的操作都是先在內(nèi)存中處理,操作完成以后再以文件流的方式輸出到瀏覽器或保存在服務(wù)器的磁盤中。創(chuàng)建一個圖像應(yīng)該完成如下所示4個基本步驟。
①創(chuàng)建畫布:所有的繪圖設(shè)計都需要在一個背景圖片上完成,而畫布實際上就是在內(nèi)存中開辟的一塊臨時區(qū)域,用于存儲圖像的信息。以后的圖像操作都將基于這個背景畫布,該畫布的管理就類似于我們在畫畫時使用的畫布。
②繪制圖像:畫布創(chuàng)建完成以后,就可以通過這個畫布資源,使用各種畫像函數(shù)設(shè)置圖像的顏色、填充畫布、畫點、線段、各種幾何圖形,以及向圖像中添加文本等。
③輸出圖像:完成整個圖像的繪制以后,需要將圖像以某種格式保存到服務(wù)器指定的文件中,或?qū)D像直接輸出到瀏覽器上顯示給客戶。但在圖像輸出之前,一定要使用header()函數(shù)發(fā)送Content-type通知瀏覽器,這次發(fā)送的是圖片不是文本。
④釋放資源:圖像被輸出以后,畫布中的內(nèi)容也不再有用。出于節(jié)約系統(tǒng)資源的考慮,需要及時清楚畫布占用的所有內(nèi)存資源。
我們先來了解一下一個非常簡單的創(chuàng)建圖像腳本。在下面的腳本文件image.php中,按前面介紹的繪制圖像的四個步驟,使用GD庫動態(tài)輸出一個扇形統(tǒng)計圖。代碼如下所示:
復(fù)制代碼 代碼如下:
//創(chuàng)建畫布,返回一個資源類型的變量$image,并在內(nèi)存中開辟一個臨時區(qū)域
$image = imagecreatetruecolor(100, 100); //創(chuàng)建畫布大小為100x100
//設(shè)置圖像中所需的顏色,相當(dāng)于在畫畫時準(zhǔn)備的染料盒
$white = imagecolorallocate($image, 0xFF, 0xFF, 0xFF); //為圖像分配顏色為白色
$gray = imagecolorallocate($image, 0xC0, 0xC0, 0xC0); //為圖像分配顏色為灰色
$darkgray = imagecolorallocate($image, 0x90, 0x90, 0x90); //為圖像分配顏色為暗灰色
$navy = imagecolorallocate($image, 0x00, 0x00, 0x80); //為圖像分配顏色為深藍(lán)色
$darknavy = imagecolorallocate($image, 0x00, 0x00, 0x50); //為圖像分配顏色為暗深藍(lán)色
$red = imagecolorallocate($image, 0xFF, 0x00, 0x00); //為圖像分配顏色為紅色
$darkred = imagecolorallocate($image, 0x90, 0x00, 0x00); //為圖像分配顏色為暗紅色
imagefill($image, 0, 0, $white); //為畫布背景填充背景顏色
//動態(tài)制作3D效果
for ($i = 60; $i >50; $i--){ //循環(huán)10次畫出立體效果
imagefilledarc($image, 50, $i, 100, 50, -160, 40, $darknavy, IMG_ARC_PIE);
imagefilledarc($image, 50, $i, 100, 50, 40, 75, $darkgray, IMG_ARC_PIE);
imagefilledarc($image, 50, $i, 100, 50, 75, 200, $darkred, IMG_ARC_PIE);
}
imagefilledarc($image, 50, 50, 100, 50, -160, 40, $navy, IMG_ARC_PIE); //畫一橢圓弧且填充
imagefilledarc($image, 50, 50, 100, 50, 40 , 75, $gray, IMG_ARC_PIE); //畫一橢圓弧且填充
imagefilledarc($image, 50, 50, 100, 50, 75, 200, $red, IMG_ARC_PIE); //畫一橢圓弧且填充
imagestring($image, 1, 15, 55, '34.7%', $white); //水平地畫一行字符串
imagestring($image, 1, 45, 35, '55.5%', $white); //水平地畫一行字符串
//向瀏覽器中輸出一個GIF格式的圖片
header('Content-type:image/png'); //使用頭函數(shù)告訴瀏覽器以圖像方式處理以下輸出
imagepng($image); //向瀏覽器輸出
imagedestroy($image); //銷毀圖像釋放資源
?>
直接通過瀏覽器請求該腳本,或是將該腳本所在的URL,賦給HTML中的IMG標(biāo)記的src屬性,都可以獲取動態(tài)輸出的圖像結(jié)果,如下圖所示:
看完上述內(nèi)容,你們對PHP中的圓形餅圖怎么利用GD庫創(chuàng)建有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。