<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      設置PHP使之能一起支持GIF與JPEG

      [摘要]問題:安裝藍點Linux 2.0后,進行PHP編程,發現只能處理GIF圖像,不能處理JPEG圖像。后來知道PHP處理圖像,使用了GD庫,而GD庫開始時是支持GIF的,但由于GIF使用了有版權爭議的LZW算法,會引起法律問題,于是從GD-1.6開始,GD庫不再支持GIF,改為支持更好的,無版權爭議的...
      問題:安裝藍點Linux 2.0后,進行PHP編程,發現只能處理GIF圖像,不能處理JPEG圖像。后來知道PHP處理圖像,使用了GD庫,而GD庫開始時是支持GIF的,但由于GIF使用了有版權爭議的LZW算法,會引起法律問題,于是從GD-1.6開始,GD庫不再支持GIF,改為支持更好的,無版權爭議的PNG。而我現在希望同時支持GIF,PNG和JPEG。經過嘗試,我成功地做到了這一點。下面介紹具體做法。我的配置為:藍點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、 當前狀態查看
      安裝藍點Linux 2.0后,Kernel,MySQL,Apache未做任何改變,看看當前狀態如何。
      創建一PHP文件,名為info.php,放于Apahce的文檔目錄下(/etc/httpd/html),其內容如下:
      <? phpinfo(); ?>
      文件就只有1行。用瀏覽器打開該文件URL(我的hostname為zhangzh):
      http://zhangzh/info.php
      如果Apache/PHP正常運行的話,頁面中將會列出PHP版本,Apache版本,以及其他各種有用的信息。我關心的是GD庫部分,看看它是否支持GIF、JPEG,結果發現支持GIF而不支持JPEG。

      1、 Jpeg6b的安裝和配置
      Jpeg的主要文件有jpeglib.h, libjpeg.a, libjpeg.so等。首先檢查系統中安裝了沒有,到/usr/include目錄下看有無jpeglib.h,到/usr/lib目錄下看有無libjpeg.a和libjpeg.so。我的系統中沒有,因而要安裝。
      獲取Jpeg源碼的地址為:
      ftp://ftp.uu.net/graphics/jpeg/
      取得的文件為jpegsrc.v6b.tar.gz,放于/usr/src目錄下。
      進入/usr/src目錄中,開始安裝過程。
      進入/usr/src:
      cd /usr/src
      解開壓縮文件:
      tar xzvf jpegsrc.v6b.tar.gz
      命令完成后多了一個子目錄jpeg-6b,Jpeg的源碼文件就在其中。
      進入該子目錄:
      cd jpeg-6b
      該目錄中的install.doc文件詳細介紹了如何安裝Jpeg,照章行事即可。
      配置生成Makefile文件:
      ./configure
      命令完成后該目錄下多了個Makefile文件。Makefile文件是許多軟件編譯、安裝的配置和過程控制文件,十分重要,應該學會看懂它的內容。
      開始編譯:
      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的主要文件有gd.h, libgd.a等。
      獲取GD源碼的地址為:
      http://www.boutell.com/gd/
      取得的文件為gd-1.8.3.tar.gz,放于/usr/src目錄下。
      已知道該版本的GD不支持GIF,但想來象我一樣希望GD同時支持GIF和JPEG的人不少,于是有人做了個補丁,把對GIF的支持加回去了?雌饋磉@是個英國人吧,他的Email地址為adam@elysium.ltd.uk。
      獲取補丁源碼的地址為:
      http://www.webofsin.com/gd-1.8.3-gif.patch
      取得的文件為gd-1.8.3-gif.patch,放于/usr/src目錄下。
      進入/usr/src:
      cd /usr/src
      解開壓縮文件:
      tar xzvf gd-1.8.3.tar.gz
      命令完成后多了一個子目錄gd-1.8.3,GD的源碼文件就在其中。
      給源碼打補丁:
      patch -p0 命令完成后gd-1.8.3子目錄下多了個gd_gif.c文件,而文件gd.h和Makefile也被作了相應修改。
      進入該子目錄:
      cd gd-1.8.3
      缺省情況下,GD庫編譯時并不加入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的主要文件有libphp4.a, libphp4.so等。
      獲取PHP源碼的地址為:
      http://php.net
      取得的文件為php-4.0.1pl2.tar.gz,放于/usr/src目錄下。
      進入/usr/src目錄并解壓文件:
      cd /usr/src
      tar xzvf php-4.0.1pl2.tar.gz
      命令完成后多了一個子目錄php-4.0.1pl2,PHP的源碼文件就在其中。
      進入該子目錄:
      cd php-4.0.1pl2
      該目錄中的INSTALL文件詳細介紹了如何安裝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'
      注意最后一行參數'--with-jpeg-dir=/usr/local' '--with-gd=/usr/local',指明了Jpeg和GD的目錄為/usr/local,這是根據步驟1、2中make install的結果而指定的。
      (由于命令太長,建議寫成shell文件再執行。文件my-php-conf內容如下:
      #! /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執行之:
      sh my-php-conf
      效果是一樣的。)
      命令完成后該目錄下多了個Makefile文件。
      編譯并安裝:
      make
      make install
      命令完成后,libphp4.so被拷到/usr/lib/apache目錄下。

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

      5、 實例測試
      再次按步驟0的說明檢查當前狀態,我已經看到,PHP改成了新的版本號,GD庫也同時支持GIF和JPEG了。
      但我還是想用實例來測試一下,這個例子的功能是讀取一個gif文件,生成縮圖,然后保存為另一個jpg文件。文件create-thumb.php的內容如下:
      <?
      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),同時把測試用的圖像文件test.gif也放于該目錄下,然后用瀏覽器打開該php文件(我的hostname為zhangzh):
      http://zhangzh/create-thumb.php
      沒出錯信息。再看Apahce的文檔目錄(/etc/httpd/html),多了一個縮圖文件test-tn.jpg。

      大功告成,班師回朝。





      日韩精品一区二区三区高清