gd庫是php處理圖形的擴展庫,gd庫提供了一系列用來處理圖片的API,使用GD庫可以處理圖片,或者生成圖片。 在網站上GD庫通常用來生成縮略圖或者用來對圖片加水印或者對網站數據生成報表。
-
打開php.ini文件
- 檢驗方法
-
//測試能夠用GD庫
if(extension_loaded('gd')){
echo '你可以使用GD庫';
foreach(gd_info() as $cate=>$value)
echo '$cate:$value<br/>';
}else{
echo '你沒有裝gd擴展';
}
-
PHP中實現大圖自動縮成小圖(GD庫的安裝)
我覺得網絡編程與普通編程最大的區別就是,網絡編程除了具備普通編程的特性外,還要花很大精力考慮速度的問題。
網站上需要很多圖片,現在有很多給用戶存放照片,圖片的“像冊”程序,可以讓用戶自己上傳圖片,然后自動縮成小圖,可以讓你在一個頁面看到很多小圖,然后點擊小圖看大圖。
注意:在網頁中指定長寬顯示圖片,只能讓圖片以小尺寸顯示,但是大小(容量)不變(可以看看屬性),速度自然很慢。真正的縮圖是把大圖的大小(容量)變小,就是重新生成一個小尺寸的圖片文件。我的一個程序有此功能,正在測試:www1.yn.cninfo.net/love
另外,裝上GD庫,還有很多功能,可以用程序畫圖,做些特別的計數器之類,還可以支持FREETYPE字體等等,里面函數很多,功能很強大。
先簡單說說GIF,JPG,PNG,BMP圖的區別:他們都是圖形壓縮格式。GIF格式單圖最多能顯示256種顏色,可以保存多圖,適合做小動畫,容量較大。 JPEG格式,支持24位(16 百萬)種顏色,適合於靜態圖,容量較小。PNG格式,包含GIF,JPEG的所有特點,支持48位顏色,但是容量較大,而且應用不廣泛。 BMP格式,顏色少,非常老的壓縮格式,對於網絡來說太大了。
在PHP中實現大圖自動縮成小圖其實很簡單,裝上GD庫,用一個小函數就可以了,但是安裝GD庫很麻煩。在1.6.2 版以前的 GD library 有支持 GIF 格式的功能,但因為 GIF 格式使用的 LZW 演算法牽涉到 Unisys 的專利權,因此在 GD library 1.6.2 版之后不支持 GIF 的格式。
PHP 在 3.0.13 版之后,終於支持了 PNG 的圖型格式,使用 PNG 就不怕會有版權的問題了,而且在 PHP 這個版本以后,安裝編譯時會檢查 GD library 支持的是舊的 GIF 格式還是新的 PNG 格式來決定是否使用 GIF 或 PNG 的專用函數。
常用的是 靜態模塊,就是APACHE和PHP在一起編譯,這樣PHP的執行效率高一些,但是PHP要升級或要裝GD庫之類的附加庫時就要把兩個都重新編譯,很麻煩。 動態模塊就好辦多了,單獨重新編譯PHP就行了,具體安裝查看PHP中的INSTALL文件。我費了半天勁安裝成功了,介紹一點靜態模塊加GD庫+JPEG+PNG的心得:
2. 環境: LINUX6.1+PHP4.0.6+GD1.8.4+jpeg+png+zlib+APACHE_1.3.20+MYSQL
1)下載所需的庫:
下載GD庫:建議使用Version 1.8.4 (Stable)穩定版,我編譯gd-2.0.1(BETA)時,沒通過。
http://www.boutell.com/gd/
下載zlib:
http://www.info-zip.org/pub/infozip/zlib/
下載libpng:建議使用libpng-1.0.6-1-src.tar.gz
http://www.turbolinux.com.cn/pub/mirrors/sourceware/cygwin/contrib/libpng/
下載jpegsrc.v6b.tar.gz:
http://www.turbolinux.com.cn/pub/mirrors/gnu/ghostscript/
以下步驟需要按順序執行:
2)我用的是LINUX6.1,內核是2.2.12。以ROOT進入,解壓所有包,tar -zxvf filename 。然后編譯:
3)如果你的LINUX沒有安裝zlib,必須先安裝zilb,進入zlib-1.1.3 執行:
./configure
make
make install
4)進入libpng-1.0.6,可以在LINUX,或DOS下安裝,LINUX下需要拷貝他的makefile文件, 執行:
cp scripts/makefile.linux makefile
make
make install
5)進入jpeg-6b 執行:
./configure
make
make install
6a)進入gd-1.8.4
修改Makefile
檢查GD庫編譯時是否加入加入JPEG支持,得修改Makefile文件。
修改Makefile文件,使得:
CFLAGS=-O -DHAVE_LIBPNG -DHAVE_LIBJPEG
LIBS=-lgd -lpng -lz -lm -ljpeg
或者,如果你FREETYPE,XPM,TTF等庫都安裝了,(安裝方法大同小異,自己去找庫吧),就改下面:
#CFLAGS=-O -DHAVE_LIBXPM -DHAVE_LIBPNG -DHAVE_LIBJPEG
#-DHAVE_LIBFREETYPE -DHAVE_LIBTTF
#LIBS=-lgd -lpng -lz -ljpeg -lfreetype -lm -lttf
去掉#
此后,編譯並安裝:
make
make install
(如果需要MYSQL,而你沒裝,就先裝MYSQL,解壓,執行: ./configure ; make ; make install
./configure --prefix=/home/mysql ,默認安裝路徑/usr/local/share/mysql 。)
7)重新編譯PHP,我用的是PHP-4.0.6,最好先看看安裝文件,more INSTALL,然后執行:
7.1)解壓進入apache_1.3.20,需要先考些文件,執行:
./configure --prefix=/home/apache
--activate-module=src/modules/php4/libphp4.a
7.2)解壓進入php-4.0.6,編譯安裝:
./configure --with-mysql --with-apache=../apache_1.3.20
--with-gd=../gd-1.8.4 --with-jpeg-dir=../jpeg-6b --with-png-dir=../libpng-1.0.6
--with-zlib --enable-track-var
(默認安裝路徑:/usr/local/lib/php)
8)如果你的PHP是和APACHE一起編譯的,靜態模塊,就要重新編譯APACHE,我用的是apache_1.3.20
先停掉APACHE:./home/apache/bin/apachectl stop
進入apache_1.3.20,需要改文件src/Configuration:
加入: AddModule modules/php4/libphp4.a
〔 這是APACHE_1.3.x的安裝,如果你用的是APACHE_1.2.x,就加入Module php4_module mod_php4.o
然后拷貝libphp4.module到src,修改相應語句為:EXTRA_LIBS=-L. -lphp4 -lgdbm -ldb -L/usr/local/mysql/lib -lmysqlclient
如果你采用動態模塊安裝,如果是初次安裝,修改語句不同,具體查看PHP的INSATLL文件。〕
然后執行:
./configure --prefix=/home/apache (prefix=是指定存放路徑。不帶prefix,默認的是/usr/local/apache)
(也可以直接執行./configure --prefix=/home/apache
--activate-module=src/modules/php4/libphp4.a )
make
make install
9)進入 php-4.0.6 執行
cp php.ini-dist /usr/local/lib/php.ini
10)啟動APACHE: ./home/apache/bin/apachectl start
11)運行你的phpinfo()程序,默認APACHE的根目錄是/usr/local/apache/htdocs/ 。如過跟上面WINDOWS中顯示一樣,那就恭喜你安裝成功了,可以支持PHP+GD+JPEG+PNG了。不行的話,重裝試試。
另外,在gd-1.8.3中有個GIF的補丁,我試過沒有成功,看來要版本很低的LINUX才行,如果你成功了,或者在LINUX6.1以上版本中有什么其他辦法實現PHP+GD+GIF,麻煩告訴我(E_mail:UBs@ynmail.com)
如果要用GIF圖形,操作如下,把上面步驟:6a換成6b
使用gd-1.8.3,加上GIF補丁編譯,使GD庫包含GIF庫:
6b)下載:http://www.boutell.com/gd/http/gd-1.8.3.tar.gz