色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

配置PHP使之能同時(shí)支持GIF和JPEG

問題:安裝藍(lán)點(diǎn)Linux 2.0后,進(jìn)行php編程,發(fā)現(xiàn)只能處理GIF圖像,不能處理JPEG圖像。后來知道php處理圖像,使用了GD庫(kù),而GD庫(kù)開始時(shí)是支持GIF的,但由于GIF使用了有版權(quán)爭(zhēng)議的LZW算法,會(huì)引起法律問題,于是從GD-1.6開始,GD庫(kù)不再支持GIF,改為支持更好的,無版權(quán)爭(zhēng)議的PNG。而我現(xiàn)在希望同時(shí)支持GIF,PNG和JPEG。經(jīng)過嘗試,我成功地做到了這一點(diǎn)。下面介紹具體做法。我的配置為:藍(lán)點(diǎn)Linux 2.0,Kernel-2.2.16,MySQL-3.23.10alpha,Apache-1.3.12,php4.0.1pl2,gd-1.8.3,Jpeg6b。





我將按照由底向上的順序介紹,即Jpeg->GD->php->Apache。

0、 當(dāng)前狀態(tài)查看
安裝藍(lán)點(diǎn)Linux 2.0后,Kernel,MySQL,Apache未做任何改變,看看當(dāng)前狀態(tài)如何。
創(chuàng)建一php文件,名為info.php,放于Apahce的文檔目錄下(/etc/httpd/html),其內(nèi)容如下:
<? phpinfo(); ?>
文件就只有1行。用瀏覽器打開該文件URL(我的hostname為zhangzh):
http://zhangzh/info.php
如果Apache/php正常運(yùn)行的話,頁(yè)面中將會(huì)列出php版本,Apache版本,以及其他各種有用的信息。我關(guān)心的是GD庫(kù)部分,看看它是否支持GIF、JPEG,結(jié)果發(fā)現(xiàn)支持GIF而不支持JPEG。

1、 Jpeg6b的安裝和配置
Jpeg的主要文件有jpeglib.h, libjpeg.a, libjpeg.so等。首先檢查系統(tǒng)中安裝了沒有,到/usr/include目錄下看有無jpeglib.h,到/usr/lib目錄下看有無libjpeg.a和libjpeg.so。我的系統(tǒng)中沒有,因而要安裝。
獲取Jpeg源碼的地址為:
ftp://ftp.uu.NET/graphics/jpeg/
取得的文件為jpegsrc.v6b.tar.gz,放于/usr/src目錄下。
進(jìn)入/usr/src目錄中,開始安裝過程。
進(jìn)入/usr/src:
cd /usr/src
解開壓縮文件:
tar xzvf jpegsrc.v6b.tar.gz
命令完成后多了一個(gè)子目錄jpeg-6b,Jpeg的源碼文件就在其中。
進(jìn)入該子目錄:
cd jpeg-6b
該目錄中的install.doc文件詳細(xì)介紹了如何安裝Jpeg,照章行事即可。
配置生成Makefile文件:
./configure
命令完成后該目錄下多了個(gè)Makefile文件。Makefile文件是許多軟件編譯、安裝的配置和過程控制文件,十分重要,應(yīng)該學(xué)會(huì)看懂它的內(nèi)容。
開始編譯:
make
命令完成后該目錄下多了許多文件,其中重要的是libjpeg.a和libjpeg.so。
安裝:
make install
命令完成后,jpeglib.h被拷到/usr/local/include目錄下,libjpeg.a和libjpeg.so被拷到/usr/local/lib目錄下。

2、 GD-1.8.3的安裝和配置
GD的主要文件有g(shù)d.h, libgd.a等。
獲取GD源碼的地址為:
http://www.boutell.com/gd/
取得的文件為gd-1.8.3.tar.gz,放于/usr/src目錄下。
已知道該版本的GD不支持GIF,但想來象我一樣希望GD同時(shí)支持GIF和JPEG的人不少,于是有人做了個(gè)補(bǔ)丁,把對(duì)GIF的支持加回去了。看起來這是個(gè)英國(guó)人吧,他的Email地址為adam@elysium.ltd.uk。
獲取補(bǔ)丁源碼的地址為:
http://www.webofsin.com/gd-1.8.3-gif.patch
取得的文件為gd-1.8.3-gif.patch,放于/usr/src目錄下。
進(jìn)入/usr/src:
cd /usr/src
解開壓縮文件:
tar xzvf gd-1.8.3.tar.gz
命令完成后多了一個(gè)子目錄gd-1.8.3,GD的源碼文件就在其中。
給源碼打補(bǔ)丁:
patch -p0 命令完成后gd-1.8.3子目錄下多了個(gè)gd_gif.c文件,而文件gd.h和Makefile也被作了相應(yīng)修改。
進(jìn)入該子目錄:
cd gd-1.8.3
缺省情況下,GD庫(kù)編譯時(shí)并不加入JPEG支持,得修改Makefile文件。
修改Makefile文件,使得:
CFLAGS=-O -DHAVE_XPM -DHAVE_JPEG -DHAVE_LIBTTF
LIBS=-lm -lgd -lpng -lz -ljpeg -lttf -lXpm -lX11
此后,編譯并安裝: 
make
make install
命令完成后,gd.h被拷到/usr/local/include目錄下,libgd.a被拷到/usr/local/lib目錄下。

3、 php-4.0.1pl2的安裝和配置
php的主要文件有l(wèi)ibphp4.a, libphp4.so等。
獲取php源碼的地址為:
http://php.NET
取得的文件為php-4.0.1pl2.tar.gz,放于/usr/src目錄下。
進(jìn)入/usr/src目錄并解壓文件:
cd /usr/src
tar xzvf php-4.0.1pl2.tar.gz
命令完成后多了一個(gè)子目錄php-4.0.1pl2,php的源碼文件就在其中。
進(jìn)入該子目錄:
cd php-4.0.1pl2
該目錄中的INSTALL文件詳細(xì)介紹了如何安裝php,照章行事即可。
配置生成Makefile文件:
./configure '--with-apxs=/usr/sbin/apxs' '--with-mysql' 
'--with-config-file-path=/etc/httpd' '--enable-safe-mode' 
'--with-system-regex' '--disable-debug' 
'--with-zlib' '--enable-magic-quotes' '--enable-track-vars' 
'--with-jpeg-dir=/usr/local' '--with-gd=/usr/local'
注意最后一行參數(shù)'--with-jpeg-dir=/usr/local' '--with-gd=/usr/local',指明了Jpeg和GD的目錄為/usr/local,這是根據(jù)步驟1、2中make install的結(jié)果而指定的。
(由于命令太長(zhǎng),建議寫成shell文件再執(zhí)行。文件my-php-conf內(nèi)容如下:
#! /bin/sh
./configure '--with-apxs=/usr/sbin/apxs' '--with-mysql' 
'--with-config-file-path=/etc/httpd' '--enable-safe-mode' 
'--with-system-regex' '--disable-debug' 
'--with-zlib' '--enable-magic-quotes' '--enable-track-vars' 
'--with-jpeg-dir=/usr/local' '--with-gd=/usr/local'
用shell執(zhí)行之:
sh my-php-conf
效果是一樣的。)
命令完成后該目錄下多了個(gè)Makefile文件。
編譯并安裝:
make
make install
命令完成后,libphp4.so被拷到/usr/lib/apache目錄下。

4、 Apache的配置
Apache本身不必重新編譯安裝,但使用了新的php,須讓Apache知道,得修改Apache的配置文件并重啟Apache服務(wù)。
修改Apache配置文件/etc/httpd/conf/httpd.conf,使得文件中包含以下幾行:
LoadModule php4_module modules/libphp4.so
AddModule mod_php4.c
AddType application/x-httpd-php .php3 .php
同時(shí)注意把舊的php3的相應(yīng)行注釋掉,否則會(huì)出現(xiàn)沖突而使Apache重啟失敗。
重啟Apache服務(wù):
/etc/rc.d/init.d/httpd restart

5、 實(shí)例測(cè)試
再次按步驟0的說明檢查當(dāng)前狀態(tài),我已經(jīng)看到,php改成了新的版本號(hào),GD庫(kù)也同時(shí)支持GIF和JPEG了。
但我還是想用實(shí)例來測(cè)試一下,這個(gè)例子的功能是讀取一個(gè)gif文件,生成縮圖,然后保存為另一個(gè)jpg文件。文件create-thumb.php的內(nèi)容如下:
<?
function CreateThumbnail($srcFile, $dstFile, $dstW, $dstH)
{
$data = GetImageSize($srcFile,&$info);
switch ($data[2]) {
case 1:
$im = @ImageCreateFromGIF($srcFile);
break;
case 2:
$im = @ImageCreateFromJPEG($srcFile);
break;
case 3:
$im = @ImageCreateFromPNG($srcFile);
break;
}
$srcW=ImageSX($im);
$srcH=ImageSY($im);
if ($srcW <= $dstW && $srcH <= $dstH)
ImageJPEG($im,$dstFile);
else
{
if(($srcW / $srcH) > ($dstW / $dstH))
$dstH = $dstW * $srcH / $srcW;
else
$dstW = $dstH * $srcW / $srcH;
$ni=ImageCreate($dstW,$dstH);
ImageCopyResized($ni,$im,0,0,0,0,$dstW,$dstH,$srcW,$srcH);
ImageJPEG($ni,$dstFile);
}
}
CreateThumbnail("./test.gif", "./test-tn.jpg", 80, 80);
?>
把該文件放于Apahce的文檔目錄下(/etc/httpd/html),同時(shí)把測(cè)試用的圖像文件test.gif也放于該目錄下,然后用瀏覽器打開該php文件(我的hostname為zhangzh):
http://zhangzh/create-thumb.php
沒出錯(cuò)信息。再看Apahce的文檔目錄(/etc/httpd/html),多了一個(gè)縮圖文件test-tn.jpg。

大功告成,班師回朝。


php技術(shù)配置PHP使之能同時(shí)支持GIF和JPEG,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 临漳县| 桃源县| 石柱| 班玛县| 德令哈市| 那坡县| 佛山市| 南和县| 东山县| 抚顺市| 鄂托克前旗| 沾化县| 西藏| 平邑县| 凤山市| 永安市| 哈巴河县| 阿巴嘎旗| 晴隆县| 海淀区| 密云县| 平定县| 黎城县| 银川市| 龙胜| 甘德县| 大竹县| 宿迁市| 河东区| 武宁县| 皋兰县| 怀宁县| 长春市| 涿州市| 河南省| 宁南县| 伽师县| 平山县| 巍山| 静乐县| 都兰县|