PHP中使用GD庫(kù)創(chuàng)建圓形餅圖的例子
在PHP中,有一些簡(jiǎn)單的圖像函數(shù)是可以直接使用的,但大多數(shù)要處理的圖像,都需要在編譯PHP時(shí)加上GD庫(kù)。除了安裝GD庫(kù)之外,在PHP中還可能需要其他的庫(kù),這可以根據(jù)需要支持哪些圖像格式而定。GD庫(kù)可以在http://www.boutell.com/gd/免費(fèi)下載,不同的GD版本支持的圖像格式不完全一樣,最新的GD庫(kù)版本支持GIF、JPEG、PNG、WBMP、XBM等格式的圖像文件,此外還支持一些如FreeType、Type 1等字體庫(kù)。通過(guò)GD庫(kù)中的函數(shù),可以完成各種點(diǎn)、線、幾何圖形、文本及顏色的操作處理,也可以創(chuàng)建或讀取多種格式的圖像文件。
在PHP中,通過(guò)GD庫(kù)處理圖像的操作都是先在內(nèi)存中處理,操作完成以后再以文件流的方式輸出到瀏覽器或保存在服務(wù)器的磁盤中。創(chuàng)建一個(gè)圖像應(yīng)該完成如下所示4個(gè)基本步驟。
?、賱?chuàng)建畫布:所有的繪圖設(shè)計(jì)都需要在一個(gè)背景圖片上完成,而畫布實(shí)際上就是在內(nèi)存中開(kāi)辟的一塊臨時(shí)區(qū)域,用于存儲(chǔ)圖像的信息。以后的圖像操作都將基于這個(gè)背景畫布,該畫布的管理就類似于我們?cè)诋嫯嫊r(shí)使用的畫布。
?、诶L制圖像:畫布創(chuàng)建完成以后,就可以通過(guò)這個(gè)畫布資源,使用各種畫像函數(shù)設(shè)置圖像的顏色、填充畫布、畫點(diǎn)、線段、各種幾何圖形,以及向圖像中添加文本等。
?、圯敵鰣D像:完成整個(gè)圖像的繪制以后,需要將圖像以某種格式保存到服務(wù)器指定的文件中,或?qū)D像直接輸出到瀏覽器上顯示給客戶。但在圖像輸出之前,一定要使用header()函數(shù)發(fā)送Content-type通知瀏覽器,這次發(fā)送的是圖片不是文本。
?、茚尫刨Y源:圖像被輸出以后,畫布中的內(nèi)容也不再有用。出于節(jié)約系統(tǒng)資源的考慮,需要及時(shí)清楚畫布占用的所有內(nèi)存資源。
我們先來(lái)了解一下一個(gè)非常簡(jiǎn)單的創(chuàng)建圖像腳本。在下面的腳本文件image.php中,按前面介紹的繪制圖像的四個(gè)步驟,使用GD庫(kù)動(dòng)態(tài)輸出一個(gè)扇形統(tǒng)計(jì)圖。代碼如下所示:
<?php
//創(chuàng)建畫布,返回一個(gè)資源類型的變量$image,并在內(nèi)存中開(kāi)辟一個(gè)臨時(shí)區(qū)域
$image = imagecreatetruecolor(100, 100); //創(chuàng)建畫布大小為100x100
//設(shè)置圖像中所需的顏色,相當(dāng)于在畫畫時(shí)準(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); //為畫布背景填充背景顏色
//動(dòng)態(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); //水平地畫一行字符串
//向?yàn)g覽器中輸出一個(gè)GIF格式的圖片
header('Content-type:image/png'); //使用頭函數(shù)告訴瀏覽器以圖像方式處理以下輸出
imagepng($image); //向?yàn)g覽器輸出
imagedestroy($image); //銷毀圖像釋放資源
?>
直接通過(guò)瀏覽器請(qǐng)求該腳本,或是將該腳本所在的URL,賦給HTML中的IMG標(biāo)記的src屬性,都可以獲取動(dòng)態(tài)輸出的圖像結(jié)果,如下圖所示:
- PHP GD庫(kù)生成圖像的幾個(gè)函數(shù)總結(jié)
- php實(shí)現(xiàn)的支持imagemagick及gd庫(kù)兩種處理的縮略圖生成類
- 使用gd庫(kù)實(shí)現(xiàn)php服務(wù)端圖片裁剪和生成縮略圖功能分享
- PHP用GD庫(kù)生成高質(zhì)量的縮略圖片
- php的GD庫(kù)imagettftext函數(shù)解決中文亂碼問(wèn)題
- 可定制的PHP縮略圖生成程式(需要GD庫(kù)支持)
- PHP5中GD庫(kù)生成圖形驗(yàn)證碼(有漢字)
- PHP基于GD庫(kù)的縮略圖生成代碼(支持jpg,gif,png格式)
- PHP中使用GD庫(kù)繪制折線圖 折線統(tǒng)計(jì)圖的繪制方法
- php 使用GD庫(kù)為頁(yè)面增加水印示例代碼
- php利用GD庫(kù)生成縮略圖示例
- php中使用gd庫(kù)實(shí)現(xiàn)下載網(wǎng)頁(yè)中所有圖片
- PHP基于GD庫(kù)的圖像處理方法小結(jié)
相關(guān)文章
php array_values 返回?cái)?shù)組的值實(shí)例詳解
php array_values 函數(shù)用于返回?cái)?shù)組中所有的值,注意該函數(shù)將為新數(shù)組建立數(shù)組索引,原來(lái)的文字索引將不存在。本文章向大家講解array_values函數(shù)的基本語(yǔ)法及使用實(shí)例,需要的朋友可以參考下2016-11-11discuz 首頁(yè)四格:最新話題+最新回復(fù)+熱門話題+精華文章插件
discuz 首頁(yè)四格:最新話題+最新回復(fù)+熱門話題+精華文章插件...2007-08-08php冒泡算法實(shí)現(xiàn)倒序和正序排列的示例代碼
冒泡排序是一種簡(jiǎn)單的排序算法,其主要思想是比較相鄰的兩個(gè)元素,根據(jù)需要交換位置,將較大(或較小)的元素逐漸冒泡到數(shù)組的一端,從而實(shí)現(xiàn)排序,這篇文章主要介紹了php冒泡算法實(shí)現(xiàn)倒序和正序排列,需要的朋友可以參考下2023-11-11PHP輸出當(dāng)前進(jìn)程所有變量/常量/模塊/函數(shù)/類的示例
PHP輸出當(dāng)前進(jìn)程所有變量、常量、模塊、函數(shù)、類的示例2013-11-11php設(shè)計(jì)模式之中介者模式分析【星際爭(zhēng)霸游戲案例】
這篇文章主要介紹了php設(shè)計(jì)模式之中介者模式,結(jié)合具體案例形式分析了星際爭(zhēng)霸游戲中使用PHP中介者模式的相關(guān)操作技巧,需要的朋友可以參考下2020-03-03