国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) 後端開(kāi)發(fā) php教程 配置PHP使之能同時(shí)支援GIF和JPEG_PHP教程

配置PHP使之能同時(shí)支援GIF和JPEG_PHP教程

Jul 21, 2016 pm 04:07 PM
gif jpeg linux php 安裝 支援 程式設(shè)計(jì) 進(jìn)行 配置 問(wèn)題

問(wèn)題:安裝藍(lán)點(diǎn)Linux 2.0後,進(jìn)行PHP編程,發(fā)現(xiàn)只能處理GIF影像,無(wú)法處理JPEG影像。後來(lái)知道PHP處理影像,使用了GD庫(kù),而GD庫(kù)開(kāi)始時(shí)是支援GIF的,但由於GIF使用了有版權(quán)爭(zhēng)議的LZW演算法,會(huì)引起法律問(wèn)題,於是從GD-1.6開(kāi)始,GD庫(kù)不再支持GIF,改為支援更好的,無(wú)版權(quán)爭(zhēng)議的PNG。而我現(xiàn)在希望同時(shí)支援GIF,PNG和JPEG。經(jīng)過(guò)嘗試,我成功地做到了這一點(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、 目前狀態(tài)檢視
安裝藍(lán)點(diǎn)Linux 2.0後,Kernel,MySQL,Apache未做任何改變,看看目前狀態(tài)如何。
建立一PHP文件,名稱為info.php,放於Apahce的文檔目錄下(/etc/httpd/html),其內(nèi)容如下:
 phpinfo(); ?>
文件就只有1行。用瀏覽器開(kāi)啟該檔案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的安裝與設(shè)定
Jpeg的主要檔案有jpeglib.h, libjpeg.a, libjpeg.so等。先檢查系統(tǒng)中安裝了沒(méi)有,到/usr/include目錄下看有無(wú)jpeglib.h,到/usr/lib目錄下看有無(wú)libjpeg.a和libjpeg.so。我的系統(tǒng)中沒(méi)有,因而要安裝。
取得Jpeg原始碼的位址為:
ftp://ftp.uu.net/graphics/jpeg/
取得的檔案為jpegsrc.v6b.tar.gz,放於/usr/src目錄下。
進(jìn)入/usr/src目錄中,開(kāi)始安裝程序。
進(jìn)入/usr/src:
cd /usr/src
解開(kāi)壓縮檔:
tar xzvf jpegsrc.v6b.tar.gz
指令完成後多了一個(gè)子目錄完成後多了一個(gè)子目錄6b,Jpeg的源碼檔案就在其中。
進(jìn)入該子目錄:
cd jpeg-6b
該目錄中的install.doc檔案詳細(xì)介紹如何安裝Jpeg,照章行事即可。
設(shè)定產(chǎn)生Makefile檔:
./configure
指令完成後目錄下多了個(gè)Makefile檔。 Makefile檔案是許多軟體編譯、安裝的設(shè)定和流程控製文件,十分重要,應(yīng)該學(xué)會(huì)看懂它的內(nèi)容。
開(kā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的安裝與設(shè)定
GD的主要檔案有g(shù)d.h, libgd.a等。
取得GD原始碼的位址為:
http://www.boutell.com/gd/
取得的檔案為gd-1.8.3.tar.gz,放於/usr/src目錄下。
已知道該版本的GD不支援GIF,但想來(lái)像我一樣希望GD同時(shí)支援GIF和JPEG的人不少,於是有人做了個(gè)補(bǔ)丁,把對(duì)GIF的支援加回去了??雌饋?lái)這是個(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
解開(kāi)壓縮檔:
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 -lp n-TH -1S1 1Hy-l.安裝: 
make
make install
指令完成後,gd.h被拷到/usr/local/include目錄下,libgd.a被複製到/usr/local/lib目錄下。

3、 PHP-4.0.1pl2的安裝與設(shè)定
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,照章行事即可。
設(shè)定產(chǎn)生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的設(shè)定
Apache本身不必重新編譯安裝,但使用了新的PHP,必須讓Apache知道,得修改Apache的設(shè)定檔並重啟Apache服務(wù)。
修改Apache設(shè)定檔/etc/httpd/conf/httpd.conf,使得檔案中包含以下幾行:
LoadModule php4_module modules/libphp4.so
AddModule n_php4.ccation -httpd-php .php3 .php
同時(shí)注意把舊的php3的對(duì)應(yīng)行註解掉,否則會(huì)出現(xiàn)衝突而使Apache重啟失敗。
重啟Apache服務(wù):
/etc/rc.d/init.d/httpd restart

5、 實(shí)例測(cè)試
再次按步驟0的說(shuō)明檢查當(dāng)前狀態(tài),我已經(jīng)看到,PHP改成了新的版本號(hào),GD庫(kù)也同時(shí)支援GIF和JPEG了。
但我還是想用實(shí)例來(lái)測(cè)試一下,這個(gè)例子的功能是讀取一個(gè)gif文件,產(chǎn)生縮圖,然後儲(chǔ)存為另一個(gè)jpg檔案。文件create-thumb.php的內(nèi)容如下:

function CreateThumbnail($srcFile, $dstFile, $dstW, $dstH)
{
$data,a  $dstH)
{
$data,a 〕》? info);
switch ($data[2]) {
case 1:
$im = @ImageCreateFromGIF($srcFile);
break;
?? = @ImageCreateFromJPEG($srcFile);
break;
case 3:
$im = @ImageCreateFromPNG($srcFile); $srcH=ImageSY($im);
if ($srcW ImageJPEG($Smage
{
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,$dst. srcW,$srcH);
ImageJPEG($ni,$dstFile);
}
}
CreateThumbnail("./test.gif", "./test-tn.jpg",humbnail("./test.gif", "./test-tn.jpg", 80 , 80);
?>
把該文件放於Apahce的文檔目錄下(/etc/httpd/html),同時(shí)把測(cè)試用的圖像文件test.gif也放於該目錄下,然後用瀏覽器開(kāi)啟該php檔案(我的hostname為zhangzh):
http://zhangzh/create-thumb.php
沒(méi)出錯(cuò)訊息。再看Apahce的文檔目錄(/etc/httpd/html),多了一個(gè)縮圖檔test-tn.jpg。

大功告成,班師回朝。






http://www.bkjia.com/PHPjc/315210.html

www.bkjia.com

truehttp: //www.bkjia.com/PHPjc/315210.htmlTechArticle問(wèn)題:安裝藍(lán)點(diǎn)Linux 2.0後,進(jìn)行PHP編程,發(fā)現(xiàn)只能處理GIF影像,無(wú)法處理JPEG影像。後來(lái)知道PHP處理影像,使用了GD庫(kù),而GD庫(kù)開(kāi)始時(shí)是支援...
本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

在C中使用std :: Chrono 在C中使用std :: Chrono Jul 15, 2025 am 01:30 AM

std::chrono在C 中用於處理時(shí)間,包括獲取當(dāng)前時(shí)間、測(cè)量執(zhí)行時(shí)間、操作時(shí)間點(diǎn)與持續(xù)時(shí)間及格式化解析時(shí)間。 1.獲取當(dāng)前時(shí)間使用std::chrono::system_clock::now(),可轉(zhuǎn)換為可讀字符串但係統(tǒng)時(shí)鐘可能不單調(diào);2.測(cè)量執(zhí)行時(shí)間應(yīng)使用std::chrono::steady_clock以確保單調(diào)性,並通過(guò)duration_cast轉(zhuǎn)換為毫秒、秒等單位;3.時(shí)間點(diǎn)(time_point)和持續(xù)時(shí)間(duration)可相互操作,但需注意單位兼容性和時(shí)鐘紀(jì)元(epoch)

PHP如何處理環(huán)境變量? PHP如何處理環(huán)境變量? Jul 14, 2025 am 03:01 AM

toAccessenvironmentVariablesInphp,useGetenv()或$ _envsuperglobal.1.getEnv('var_name')retievesSpecificvariable.2。 $ _ en v ['var_name'] accessesvariablesifvariables_orderInphp.iniincludes“ e” .setVariablesViaCliWithvar = vualitephpscript.php,inapach

為什麼我們?cè)u(píng)論:PHP指南 為什麼我們?cè)u(píng)論:PHP指南 Jul 15, 2025 am 02:48 AM

PHPhasthreecommentstyles://,#forsingle-lineand/.../formulti-line.Usecommentstoexplainwhycodeexists,notwhatitdoes.MarkTODO/FIXMEitemsanddisablecodetemporarilyduringdebugging.Avoidover-commentingsimplelogic.Writeconcise,grammaticallycorrectcommentsandu

PHP標(biāo)頭重定向不起作用 PHP標(biāo)頭重定向不起作用 Jul 14, 2025 am 01:59 AM

header函數(shù)跳轉(zhuǎn)失敗原因及解決方法:1.header前已有輸出,需檢查並移除所有前置輸出或使用ob_start()緩衝;2.未加exit導(dǎo)致後續(xù)代碼干擾,應(yīng)在跳轉(zhuǎn)後立即添加exit或die;3.路徑錯(cuò)誤應(yīng)使用絕對(duì)路徑或動(dòng)態(tài)拼接確保正確;4.服務(wù)器配置或緩存干擾可嘗試清除緩存或更換環(huán)境測(cè)試。

PHP準(zhǔn)備的聲明獲得結(jié)果 PHP準(zhǔn)備的聲明獲得結(jié)果 Jul 14, 2025 am 02:12 AM

在PHP中使用預(yù)處理語(yǔ)句獲取數(shù)據(jù)庫(kù)查詢結(jié)果的方法因擴(kuò)展而異,1.使用mysqli時(shí)可通過(guò)get_result()配合fetch_assoc()獲取關(guān)聯(lián)數(shù)組,適用於現(xiàn)代環(huán)境;2.也可使用bind_result()綁定變量,適合字段少、結(jié)構(gòu)固定的情況,兼容性好但字段多時(shí)較繁瑣;3.使用PDO時(shí)通過(guò)fetch(PDO::FETCH_ASSOC)獲取關(guān)聯(lián)數(shù)組,或用fetchAll()一次性獲取所有數(shù)據(jù),接口統(tǒng)一且錯(cuò)誤處理更清晰;此外需注意參數(shù)類型匹配、執(zhí)行execute()、及時(shí)釋放資源及開(kāi)啟錯(cuò)誤報(bào)告以

PHP檢查字符串是否以特定的字符串開(kāi)頭 PHP檢查字符串是否以特定的字符串開(kāi)頭 Jul 14, 2025 am 02:44 AM

在PHP中判斷字符串是否以特定字符串開(kāi)頭可通過(guò)多種方法實(shí)現(xiàn):1.使用strncmp()比較前n個(gè)字符,若返回0則開(kāi)頭匹配,不區(qū)分大小寫;2.使用strpos()檢查子字符串位置是否為0,區(qū)分大小寫,可用stripos()替代實(shí)現(xiàn)不區(qū)分大小寫;3.可封裝startsWith()或str_starts_with()函數(shù)提高複用性;此外需注意空字符串默認(rèn)返回true、編碼兼容性及性能差異,strncmp()通常效率更高。

php準(zhǔn)備的語(yǔ)句與條款 php準(zhǔn)備的語(yǔ)句與條款 Jul 14, 2025 am 02:56 AM

使用PHP預(yù)處理語(yǔ)句執(zhí)行帶有IN子句的查詢時(shí),1.需根據(jù)數(shù)組長(zhǎng)度動(dòng)態(tài)生成佔(zhàn)位符;2.使用PDO時(shí)可直接傳入數(shù)組,用array_values確保索引連續(xù);3.使用mysqli時(shí)需構(gòu)造類型字符串並綁定參數(shù),注意展開(kāi)數(shù)組的方式及版本兼容性;4.避免拼接SQL、處理空數(shù)組和確保數(shù)據(jù)類型匹配。具體做法是:先用implode與array_fill生成佔(zhàn)位符,再依擴(kuò)展特性綁定參數(shù),從而安全執(zhí)行IN查詢。

如何避免PHP中未定義的索引錯(cuò)誤 如何避免PHP中未定義的索引錯(cuò)誤 Jul 14, 2025 am 02:51 AM

避免“undefinedindex”錯(cuò)誤的關(guān)鍵方法有三:首先,使用isset()檢查數(shù)組鍵是否存在並確保值不為null,適用於大多數(shù)常規(guī)場(chǎng)景;其次,使用array_key_exists()僅判斷鍵是否存在,適用於需要區(qū)分鍵不存在和值為null的情況;最後,使用空合併運(yùn)算符??(PHP7 )簡(jiǎn)潔地設(shè)置默認(rèn)值,推薦用於現(xiàn)代PHP項(xiàng)目,同時(shí)注意表單字段名拼寫、謹(jǐn)慎使用extract()及遍歷前檢查數(shù)組非空以進(jìn)一步規(guī)避風(fēng)險(xiǎn)。

See all articles