国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > PHP > 正文

用PHP創(chuàng)建并處理圖象

2024-05-04 23:04:58
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在安裝了一些第三方函數(shù)庫(kù)之后,結(jié)合圖形處理技能,你就可以迅速使用php創(chuàng)建和處理圖像了。事實(shí)上,你也不需要很多幾何學(xué)知識(shí)——因?yàn)槲以谥袑W(xué)的時(shí)候這門功課曾經(jīng)不及格而現(xiàn)在卻能使用php創(chuàng)建圖像!

在使用基本的圖像創(chuàng)建函數(shù)之前,需要安裝gd庫(kù)。要使用jpeg相關(guān)的圖像創(chuàng)建函數(shù)還需要安裝jpeg-6b。在圖像中使用type 1字體的時(shí)候還必須安裝t1lib

在這里,你還需要對(duì)你的系統(tǒng)設(shè)置進(jìn)行進(jìn)一步地調(diào)整。首先安裝t1lib并結(jié)束,然后是jpeg-6b。第三步安裝gd函數(shù)庫(kù)。確保以上三部分按順序安裝,原因是你需要編譯gd庫(kù)才能使用jpeg-6b庫(kù)。如果首先安裝jpeg-6b,編譯就會(huì)出錯(cuò),這會(huì)讓你不知所措夠上一段時(shí)間。

在三函數(shù)庫(kù)之后,重新配置php。這是在輕松安裝php的dso版本時(shí)的典型方法。然后執(zhí)行make clean,命令,并在當(dāng)前配置提示中加入以下代碼:

--with-gd=[/path/to/gd]

--with-jpeg-dir=[/path/to/jpeg-6b]

--with-t1lib=[/path/to/t1lib]

最后執(zhí)行makemake install完成配置。重新啟動(dòng) apache,并運(yùn)行phpinfo()函數(shù)以檢查新功能是否正常運(yùn)行,然后就可以開始了。

取決于安裝的gd庫(kù)版本,你可能具有創(chuàng)建gif或者png圖像的能力。關(guān)鍵是如果你已經(jīng)安裝了gd-1.6或者早期版本,則可處理gif文件,但不能處理png文件;如果安裝了gd-1.6或者以后版本,你可以處理png文件卻又不能處理gif文件。

創(chuàng)建一個(gè)簡(jiǎn)單的圖像需要幾個(gè)函數(shù)。我將按步驟演示如下。

輸出包含你所創(chuàng)建圖像mime類型的文件頭,本例中為png。

<? header ("content-type: image/png");

使用imagecreate()創(chuàng)建一變量存放空白圖像。該函數(shù)需要一個(gè)圖片像素尺寸。格式為imagecreate(x_size, y_size),對(duì)250*250像素的圖片,如下:

$newimg = imagecreate(250,250);

由于此時(shí)你的圖像還是空白,所以需要用某些色彩填滿它。但首先需要用imagecolorallocate()函數(shù)按照顏色的rgb值為每種顏色確定名字。函數(shù)的格式為imagecolorallocate([image], [red], [green], [blue])。如是天藍(lán)色,應(yīng)使用:

$skyblue = imagecolorallocate($newimg,136,193,255);

接著,用imagefill()函數(shù)為圖像填充以上顏色。實(shí)際上imagefill()函數(shù)有多個(gè)版本,如imagefillrectangle(), imagefillpolygon()等等。為簡(jiǎn)單起見,采用imagefill()函數(shù)進(jìn)行顏色填充,格式如下:

imagefill([image], [start x point], [start y point], [color])

imagefill($newimg,0,0,$skyblue);

最后,創(chuàng)建最終圖像并破壞圖像流以釋放內(nèi)存并在結(jié)束后整理系統(tǒng):

imagepng($newimg);

imagedestroy($newimg); ?>

你的代碼應(yīng)該看起來(lái)像這樣:

<? header ("content-type: image/png");

$newimg = imagecreate(250,250);

$skyblue = imagecolorallocate($newimg,136,193,255);

imagefill($newimg,0,0,$skyblue);

imagepng($newimg);

imagedestroy($newimg);

?>

如果調(diào)用腳本skyblue.php 并用自己的瀏覽器訪問(wèn)它,就會(huì)看到一個(gè)250*250像素的藍(lán)色png圖像。

還可以用圖像創(chuàng)建函數(shù)處理圖像,如對(duì)大圖像創(chuàng)建的縮略圖等。

假設(shè)你打算為某圖片制作一個(gè)35*35像素大小的縮略圖。所要做的即創(chuàng)建一個(gè)新的35*35像素大小圖像;并產(chǎn)生一個(gè)包含原始圖像內(nèi)容的圖像流;然后改變?cè)紙D像的大小,并將其放到新的空白圖像中去。

達(dá)到此目的的關(guān)鍵函數(shù)是imagecopyresized(),,格式如下所示:imagecopyresized([new image handle],[original image handle],[new image x],[new image y],[original image x],[original image y], [new image x], [new image y],[original image x],[original image y]);

注釋在代碼下面:

<? /* 發(fā)送文件頭以使瀏覽器知道文件類型*/

header("content-type: image/png");

/* 設(shè)置變量保存新圖片長(zhǎng)寬*/

$newwidth = 35;

$newheight = 35;

/* 以給定長(zhǎng)和寬創(chuàng)建空白新圖片 */

$newimg = imagecreate($newwidth,$newheight);

/* 從原始大圖獲取數(shù)據(jù) */

$origimg = imagecreatefrompng("test.png");

/* 復(fù)制更改尺寸后的圖片。使用函數(shù) imagesx() 及 imagesy 獲取原始圖片的x及x尺寸 */

imagecopyresized($newimg,$origimg,0,0,0,0,$newwidth,$newheight,imagesx($origimg),imagesy($origimg));

/* 創(chuàng)建最終圖片并清空內(nèi)存 */

imagepng($newimg);

imagedestroy($newimg); ?>

如果調(diào)用腳本resized.php并使用瀏覽器訪問(wèn)此文件,可以看到一個(gè)35*35像素的縮略png圖片。


本文作者:julie meloni 是i2i interactive的技術(shù)主管,及l(fā)inux和開放源代碼社區(qū)的大力推動(dòng)者。她撰寫了很多關(guān)于php及其他技術(shù)的書籍,并成為對(duì)cnet builder.com具有長(zhǎng)期貢獻(xiàn)的專家。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南丹县| 新田县| 松原市| 商南县| 天水市| 泸溪县| 睢宁县| 三门峡市| 招远市| 延庆县| 韶山市| 勐海县| 宝坻区| 微博| 时尚| 新平| 陇南市| 曲水县| 邹城市| 定兴县| 康马县| 东港市| 江津市| 长丰县| 丹寨县| 辽中县| 金溪县| 罗江县| 吉木萨尔县| 建阳市| 营山县| 蒙阴县| 安泽县| 汉沽区| 镇雄县| 宜章县| 安塞县| 阿克| 苏州市| 乌拉特中旗| 娄底市|