PHP程序設(shè)計基礎(chǔ)第7章-文件與圖像技術(shù)_第1頁
PHP程序設(shè)計基礎(chǔ)第7章-文件與圖像技術(shù)_第2頁
PHP程序設(shè)計基礎(chǔ)第7章-文件與圖像技術(shù)_第3頁
PHP程序設(shè)計基礎(chǔ)第7章-文件與圖像技術(shù)_第4頁
PHP程序設(shè)計基礎(chǔ)第7章-文件與圖像技術(shù)_第5頁
已閱讀5頁,還剩67頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

PHP文件與圖像技術(shù)第七章目錄01文件概述03文件上傳與下載04PHP圖像基礎(chǔ)02文件操作05圖像常見操作01文件概述文件流文件在程序中是以流的形式來操作的。流是指數(shù)據(jù)在數(shù)據(jù)源(文件)和程序(內(nèi)存)之間經(jīng)歷的路徑。所謂文件流,是指在通過HTTP協(xié)議POST或GET數(shù)據(jù)的過程中,傳輸一方直接以二進制流的方式傳送某個文件的內(nèi)容,這樣就形成了一條文件流,接收方只要將接收的流內(nèi)容直接寫進文件即可。流根據(jù)數(shù)據(jù)的傳輸方向可分為輸入流和輸出流。輸入流是指數(shù)據(jù)從數(shù)據(jù)源(文件)到程序(內(nèi)存)的路徑,輸出流是指數(shù)據(jù)從程序(內(nèi)存)到數(shù)據(jù)源(文件)的路徑。為了方便理解,可以把輸入流和輸出流比作兩根“水管”,如圖所示:如上圖中,輸入流被看成一個輸入管道,輸出流被看成一個輸出管道,數(shù)據(jù)通過輸入流從數(shù)據(jù)源輸入到程序,通過輸出流從程序輸出到數(shù)據(jù)源,從而實現(xiàn)數(shù)據(jù)的傳輸。由此可見,文件流中的輸入輸出都是相對于程序而言的。01文件概述文件類型計算機中的文件可分為多種類型,如文本文件、圖片、MP3、視頻、可執(zhí)行程序等。接下來通過下表來列舉常見的文件類型。常見文件類型01文件概述文件類型描述block塊設(shè)備文件,如某個磁盤分區(qū)、光驅(qū)等char字符設(shè)備,是指在I/O傳輸過程中以字符為單位進行傳輸?shù)脑O(shè)備,如鍵盤dir目錄類型,目錄也是文件的一種fifo命名管道,常用于將信息從一個進程傳遞到另一個進程file普遍文件類型,如文本文件、圖片、可執(zhí)行文件等link符號鏈接,是指向文件的指針,類似于windows中的快捷方式unknown未知類型01文件概述上表中列出了常用的文件類型,由于PHP對文件系統(tǒng)的操作是基于UNIX系統(tǒng)模型的,因此在Windows系統(tǒng)中只能獲得“file”、“dir”或“unknown”三種文件類型。而在UNIX系統(tǒng)中,可以獲得上表中所示的七種類型。為了方便獲取文件的類型,PHP中提供了filetype()函數(shù),filetype()函數(shù)聲明方式如下:上述代碼中,$filename表示文件名,函數(shù)的返回值為該文件的類型,如果文件不存在,則返回false。stringfiletype(string$filename)文件屬性操作文件時,經(jīng)常需要獲取文件的一些屬性,如文件的大小、權(quán)限和訪問時間等。PHP內(nèi)置了一系列函數(shù)用于獲取這些屬性,如下表所示。01文件概述函數(shù)功能intfilesize(string$filename)獲取文件大小intfilectime(string$filename)獲取文件的創(chuàng)建時間intfilemtime(string$filename)獲取文件的修改時間intfileatime(string$filename)獲取文件的上次訪問時間boolis_readable(string$filename)判斷給定文件是否可讀boolis_writable(string$filename)判斷給定文件是否可寫boolis_executable(string$filename)判斷給定文件是否可執(zhí)行boolis_file(string$filename)判斷給定文件名是否為一個正常的文件boolis_dir(string$filename)判斷給定文件名是否是一個目錄arraystat(string$filename)給出文件的信息01文件概述注意:上表中所列舉的函數(shù)都需要提供一個$filename作為參數(shù),即文件名(包括普通文件和目錄),然后獲取該文件的相關(guān)信息。除了使獨立函數(shù)分別獲取文件的屬性外,還可以使用stat()函數(shù)獲取文件的統(tǒng)計信息。使用stat()函數(shù)返回的統(tǒng)計信息,既包括索引數(shù)組,也包括關(guān)聯(lián)數(shù)組。其具體含義如下表所示。01文件概述數(shù)字下標(biāo)關(guān)聯(lián)鍵名說明0dev設(shè)備名1ino號碼2modeinode保護模式3nlink被連接數(shù)目4uid所有者的用戶id5gid所有者的組id6rdev設(shè)備類型,如果是inode設(shè)備的話7size文件大小的字節(jié)數(shù)8atime上次訪問時間(Unix時間戳)9mtime上次修改時間(Unix時間戳)10ctime上次改變時間(Unix時間戳)11blksize文件系統(tǒng)IO的塊大小12blocks所占據(jù)塊的數(shù)目需要注意的是,上表中所列出的文件統(tǒng)計信息是以UNIX系統(tǒng)為基礎(chǔ)的,而在Windows下并沒有uid、gid、blksize和blocks等屬性,所以在Windows下它們的值分別取默認(rèn)值0或-1。01文件概述打開和關(guān)閉文件1、打開文件在PHP中打開文件使用的是fopen()函數(shù),其聲明方式如下:上述聲明中,$filename表示指定打開的文件,$mode表示文件打開的模式,可選參數(shù)$use_include_path表示是否需要在$inlcude_path中搜尋文件,可選參數(shù)$content表示上下文,通常用來設(shè)置一些其它的協(xié)議。02文件操作resourcefopen(string$filename,string$mode[,bool$use_include_path=false[,resource$context]])通常在使用fopen()函數(shù)的時候,$filename參數(shù)的值不僅可以是本地文件,還可以是以http或者ftp開頭的網(wǎng)絡(luò)URL地址,而參數(shù)$mode指定文件的打開模式也有很多種,常見的模式如下表所示。02文件操作

模式說明r只讀方式打開,將文件指針指向文件頭。r+讀寫方式打開,將文件指針指向文件頭。w寫入方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建之。w+讀寫方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建之。a寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建之。a+讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建之。x創(chuàng)建并以寫入方式打開,將文件指針指向文件頭。如果文件已存在,則fopen()調(diào)用失敗并返回FALSE,并生成一條E_WARNING級別的錯誤信息。如果文件不存在則進行創(chuàng)建。x+創(chuàng)建并以讀寫方式打開,其他的行為和'x'一樣。2、關(guān)閉文件在PHP中關(guān)閉文件使用的是fclose()函數(shù),其聲明方式如下:上述代碼中,fclose()函數(shù)只有一個參數(shù),該參數(shù)類型為fopen()函數(shù)成功打開文件時返回的文件指針,如果文件關(guān)閉成功時返回true,失敗則返回false。02文件操作boolfclose(resource$handle)02文件操作讀取文件1、fread()函數(shù)fread()函數(shù)用于在打開文件時讀取指定長度的字符串,其聲明方式如下:fread()函數(shù)中的handle參數(shù)表示文件系統(tǒng)指針,length參數(shù)用于指定讀取的字節(jié)長度。該函數(shù)在讀取指定length個字節(jié)數(shù),或讀取到文件末尾時就會停止讀取文件,返回所讀取的字符串,如果出錯返回false。stringfread(resource$handle,int$length)2、fgetc()函數(shù)和fgets()函數(shù)fgetc()函數(shù)用于在打開的文件中讀取一個字符,其聲明方式如下:上述聲明中,$handle參數(shù)表示一個文件指針。該函數(shù)每次只能讀取一個字節(jié)。返回一個包含一個字符的字符串,如果遇到文件結(jié)束標(biāo)志EOF時,則返回false。02文件操作stringfgetc(resource$handle)02文件操作和fgetc()函數(shù)相對應(yīng),fgets()函數(shù)用于在打開的文件中讀取一行,其聲明方式如下:上述聲明中,$length是可選參數(shù),指定了讀取的字節(jié)數(shù)。該函數(shù)一次至多從打開的文件中讀取一行內(nèi)容。碰到換行符、EOF或者已經(jīng)讀取了length-1字節(jié)后停止(看先碰到那一種情況)。如果沒有指定$length,則默認(rèn)為1024字節(jié)。stringfgets(int$handle[,int$length])3、file_get_contents()函數(shù)file_get_contents()函數(shù)用于將文件的內(nèi)容全部讀取到一個字符串中,其聲明方式如下:file_get_contents()函數(shù)中,$filename指定要讀取的文件名,$use_include_path為可選參數(shù),如果也想在$use_include_path中搜尋文件的話,可以將該參數(shù)設(shè)為1。$context為可選參數(shù),指定文件指針的上下文,可用于修改流的行為,若為null,則忽略。$start為可選參數(shù),指定在文件中開始讀取的位置,默認(rèn)從文件頭開始。$maxlen為可選參數(shù),指定讀取的最大字節(jié)數(shù),默認(rèn)為整個文件的大小。02文件操作stringfile_get_contents(string$filename[,bool$use_include_path[,resource$context[,int$offset[,int$maxlen]]]])02文件操作4、file()函數(shù)file()函數(shù)的作用是將整個文件讀入到數(shù)組中,如果該函數(shù)執(zhí)行成功,則返回一個數(shù)組,數(shù)組中的每個元素都是文件中的一行,包括換行符在內(nèi)。如果執(zhí)行失敗,則返回false。其聲明方式如下:$filename參數(shù)指定了要讀取的文件名,也就是說該函數(shù)不需要使用fopen()函數(shù)打開文件??蛇x參數(shù)$use_include_path表示需要在該路徑中搜索文件,$content表示句柄的環(huán)境,若使用null則忽略。arrayfile(string$filename[,int$use_include_path[,resource$context]])寫入文件在PHP中提供了fwrite()和file_put_contents()等函數(shù)用于將數(shù)據(jù)寫入到文件的操作,下面將針對這兩個函數(shù)進行詳細(xì)講解。1、fwrite()函數(shù)fwrite()函數(shù)用于寫入文件,其聲明方式如下:上述聲明中,參數(shù)$handle表示fopen()函數(shù)返回的文件指針,參數(shù)$string表示要寫入的字符串。參數(shù)$length為可選參數(shù),指定寫入的字節(jié)數(shù),如果指定了$length,則寫入指定$length長度的字節(jié),如果省略,則寫入整個字符串。02文件操作intfwrite(resource$handle,string$string[,int$length])2、file_put_contents()函數(shù)在PHP中,file_put_contents()函數(shù)也可以用來對文件進行寫入操作,而且不需要使用fopen()函數(shù)打開文件,其聲明方式如下:上述聲明中,參數(shù)$filename表示指定要寫入的文件,參數(shù)$data表示指定要寫入的字符串內(nèi)容??蛇x參數(shù)$flags表示指定寫入的特征,例如FILE_USE_INCLUDE_PATH,F(xiàn)ILE_APPEND表示追加寫入,參數(shù)$context表示一個資源,該函數(shù)執(zhí)行成功時返回寫入到文件內(nèi)數(shù)據(jù)的字節(jié)數(shù),失敗則返回false。02文件操作intfile_put_contents(string$filename,string$data[,int$flags[,resource$context]])其它操作1、拷貝文件copy()函數(shù)用于實現(xiàn)拷貝文件的功能,其聲明方式如下:上述聲明中,參數(shù)$source表示指定源文件,參數(shù)$dest表示指定目標(biāo)文件,當(dāng)文件拷貝成功時其返回值為true,失敗時返回值為false。02文件操作

boolcopy(string$source,string$dest)2、重命名文件rename()函數(shù)用于實現(xiàn)文件或目錄的重命名功能,其聲明方式如下:上述聲明中,變量$oldname表示指定源文件的名稱,變量$newname表示指定新的文件名稱,如果該函數(shù)執(zhí)行成功返回true,失敗則返回false。02文件操作boolrename(string$oldname,string$newname[,resource$context])3、刪除文件unlink()函數(shù)的作用是刪除文件,其聲明方式如下:上述聲明中,參數(shù)$filename表示文件名或文件路徑,如果刪除成功返回值為true,失敗則返回false。02文件操作boolunlink(string$filename)解析目錄在程序中經(jīng)常會對文件的目錄進行操作,如獲取目錄名,文件的拓展名等,在PHP中提供了basename()、dirname()和pathinfo()三個函數(shù)來完成對文件目錄的解析操作。接下來分別進行講解。1、basename()函數(shù)basename()函數(shù)用于返回路徑中的文件名,其聲明方式如下:在上述聲明中,$path用于指定路徑名,$suffix是可選參數(shù),如果指定了該參數(shù),且文件名是以$suffix結(jié)尾的,則返回的結(jié)果中會被去掉這一部分字符。02文件操作stringbasename(string$path[,string$suffix])2、dirname()函數(shù)dirname()函數(shù)用于返回路徑中的目錄部分,其聲明方式如下:在上述聲明中,該函數(shù)只有一個參數(shù)path,即路徑名,該函數(shù)的返回值為文件的目錄。02文件操作stringdirname(string$path)3、pathinfo()函數(shù)pathinfo()函數(shù)用于以數(shù)組的形式返回路徑的信息,包括目錄名、文件名、文件基本名和擴展名。其聲明方式如下:在上述聲明中,參數(shù)$path表示指定的路徑名,可選參數(shù)$options指定要返回哪些項,默認(rèn)返回全部。該函數(shù)的返回值是一個關(guān)聯(lián)數(shù)組。02文件操作mixedpathinfo(string$path[,int$options])遍歷目錄在程序中有時需要對某個目錄下的所有的子目錄或文件進行遍歷,在PHP中提供了opendir()、readdir()、closedir()和rewinddir()等函數(shù)用于實現(xiàn)目錄的遍歷。接下來針對這四個函數(shù)進行詳細(xì)的講解。1、opendir()函數(shù)opendir()函數(shù)用于打開一個目錄句柄,其聲明方式如下:在上述聲明中,$path指定要打開的目錄路徑,$context是可選參數(shù)表示上下文,通常省略。函數(shù)如果執(zhí)行成功,則返回目錄句柄的$resource,否則返回flase。02文件操作resourceopendir(string$path[,resource$context])2、readdir()函數(shù)readdir()函數(shù)用于從目錄句柄中讀取條目,其聲明方式如下:在上述聲明中,函數(shù)只有一個參數(shù)$dir_handle,它用于接收一個目錄句柄的$resource。函數(shù)執(zhí)行成功返回目錄中下一個文件的文件名,否則返回false。02文件操作stringreaddir(resource$dir_handle)3、closedir()函數(shù)closedir()函數(shù)用于關(guān)閉目錄句柄,其聲明方式如下:在上述聲明中,函數(shù)只有一個參數(shù)$dir_handle,它用于接收一個目錄句柄的$resource。沒有返回值。02文件操作voidclosedir(resource$dir_handle)4、rewinddir()函數(shù)rewinddir()函數(shù)用于倒回目錄句柄,其聲明方式如下:在上述代碼中,函數(shù)只有一個參數(shù)$dir_handle,它指定由opendir()函數(shù)打開的目錄句柄的$resource。執(zhí)行該函數(shù)將$dir_handle指定的目錄流重置到目錄的開頭,沒有返回值。02文件操作voidrewinddir(resource$dir_handle)創(chuàng)建和刪除目錄在PHP中進行文件管理時,經(jīng)常需要對文件目錄進行創(chuàng)建和刪除,為此PHP提供了mkdir()和rmdir()函數(shù)來實現(xiàn)文件目錄的創(chuàng)建和刪除,接下來將對這兩個函數(shù)進行詳細(xì)講解。02文件操作1、mkdir()函數(shù)在PHP中,mkdir()函數(shù)用于新建目錄,其聲明方法如下:在上述聲明中,$pathname指定要創(chuàng)建的目錄,$mode為可選參數(shù),指定目錄的訪問權(quán)限,默認(rèn)值為0777。$recursive為可選參數(shù),指定是否遞歸創(chuàng)建目錄,默認(rèn)值為false。$context為可選參數(shù),指定上下文,通??梢院雎?。該函數(shù)執(zhí)行成功返回true,失敗則返回false。02文件操作boolmkdir(string$pathname[,int$mode[,bool$recursive[,resource$context]]])2、rmdir()函數(shù) 與mkdir()函數(shù)相對應(yīng),rmdir()函數(shù)用于刪除目錄,其聲明方式如下:在上述聲明中,函數(shù)只有一個參數(shù)$dirname,即指定要刪除的目錄名。函數(shù)執(zhí)行成功時返回true,否則返回false。需要注意的是,在刪除文件時必須保證該目錄是空的,且具備相應(yīng)的權(quán)限。02文件操作boolrmdir(string$dirname)統(tǒng)計目錄中所有文件的大小在實際生活中,經(jīng)常會向電腦中拷貝一些文件,在拷貝文件的過程中,通過需要看下該目錄有多少文件以及文件的總大小,這個文件總大小是通過計算機統(tǒng)計的。在程序中如果要想實現(xiàn)統(tǒng)計目錄中所有文件的總大小,則需要使用遞歸思想,首先讀取一個目錄,然后遍歷該目錄,對該目錄下的每一個文件進行判斷,如果是普通文件,則計算其大小并納入統(tǒng)計結(jié)果,如果是目錄,則進入該目錄重復(fù)上述操作,直至遍歷完所有的文件夾和文件。02文件操作文件上傳文件上傳的過程實質(zhì)上就是文件復(fù)制的過程。首先需要在瀏覽器端通過HTTP協(xié)議將文件上傳到服務(wù)器端的文件夾,然后再將其移動到指定的目錄,從而完成文件的上傳。在文件上傳的過程中,會涉及到客戶端表單設(shè)置和服務(wù)器端文件操作,接下來針對這兩部分的操作分別進行講解。03文件上傳與下載1、文件上傳表單在實現(xiàn)文件上傳時,首先需要設(shè)置文件上傳表單,這個表單的提交方式必須為POST。另外,還需要添加上傳的屬性enctype=”multipart/form-data”,該屬性說明瀏覽器可以提供文件上傳功能,服務(wù)器端提交的數(shù)據(jù)中包含文件的數(shù)據(jù)。03文件上傳與下載通過上述表單可以完成文件的上傳操作,該表單與普通表單有一些不同之處,具體如下:表單的提交方式為POST,并且有一個enctype屬性提示表單中有二進制文件數(shù)據(jù)。第1個input標(biāo)簽的type屬性為hidden表示隱藏,通過value值指定允許上傳文件的最大尺寸。第2個input標(biāo)簽的type屬性為file顯示一個文件輸入框,并提供“瀏覽”按鈕用于選擇文件。03文件上傳與下載2、PHP處理上傳文件當(dāng)用戶通過上傳表單選擇一個文件并提交后,PHP會自動生成一個$_FILES二維數(shù)組,該數(shù)組保存了上傳文件的信息。例如上傳表單中選擇文件的代碼如下:03文件上傳與下載<inputtype="file"name="userfile"/>關(guān)于該文件的所有信息都包含在$_FILES[“userfile”]數(shù)組中,并且該數(shù)組包含了多個鍵,具體如下:$_FILES[‘userfile’][‘name’]:上傳文件的名稱,如girl.jpg、boy.png等;$_FILES['userfile']['type']:上傳文件的MIME類型,如image/png等;$_FILES['userfile']['size']:上傳文件的大小,以字節(jié)為單位;$_FILES['userfile']['tmp_name']:存儲在服務(wù)器文件的臨時名稱;$_FILES['userfile']['error']:由文件上傳導(dǎo)致的錯誤代碼。03文件上傳與下載上傳文件出現(xiàn)錯誤時,$_FILES[‘userfile’][‘error’]會返回不同的常量值表示不同的錯誤,具體如下表所示。

文件上傳錯誤代碼03文件上傳與下載代碼常量值說明0UPLOAD_ERR_OK沒有錯誤發(fā)生,文件上傳成功1UPLOAD_ERR_INI_SIZE文件超過了php.ini中upload_max_filesize選項限制的值2UPLOAD_ERR_FORM_SIZE文件大小超過了表單中max_file_size選項指定的值3UPLOAD_ERR_PARTIAL文件只有部分被上傳4UPLOAD_ERR_NO_FILE沒有文件被上傳6UPLOAD_ERR_NO_TMP_DIR找不到臨時文件夾7UPLOAD_ERR_CANT_WRITE文件寫入失敗文件上傳成功后會暫時存儲在服務(wù)器端的臨時文件夾中(C:\Windows\Temp),為了讓文件存儲在指定目錄中,需要使用is_uploaded_file()函數(shù)和move_uploaded_file()函數(shù)進行設(shè)置。is_uploaded_file()函數(shù)用于判斷文件是否是通過HTTPPOST上傳的,move_uploaded_file()函數(shù)用于將上傳的文件從臨時文件夾移動到新的位置。03文件上傳與下載文件下載與文件上傳相比,文件下載要簡單得多。在實現(xiàn)文件下載時,需要在HTTP消息中設(shè)置兩個響應(yīng)消息頭,這兩個響應(yīng)消息頭用于告訴瀏覽器不要直接在瀏覽器中解析該文件,而是將文件以下載的方式打開。03文件上傳與下載下面給出一個簡單的示例,以下載圖片girl.jpg為例,示例代碼如下:在上面的代碼中,“Content-type”用于指定文件MIME類型,常見的有image/gif、image/jpeg、text/html、text/css等?!癈ontent-Disposition”用于文件描述,其中attachment表明這是一個附件,“filename=girl.jpg”則指定了下載后的文件名。03文件上傳與下載header("Content-type:

image/jpeg");//指定文件MIME類型 header("Content-Disposition:

attachment;filename=girl.jpg");//指定文件描述在PHP5之后的版本中默認(rèn)就安裝了GD庫,默認(rèn)情況下GD庫是沒有被加載的。我們需要通過配置php.ini來加載GD庫,如圖所示。在將圖中的語句改為圖中所示的形式后重啟服務(wù)器即可成功加載。當(dāng)然我們使用的集成環(huán)境默認(rèn)就加載了GD庫。當(dāng)然讀者最好打開php.ini文件確認(rèn)一下。在修改配置后我們可以通過兩種方法來驗證。04PHP圖像基礎(chǔ)(1)通過輸出PHP信息確認(rèn)GD庫已成功加載。

phphinfo();(2)通過gd_info()取得GD庫信息。

print_r(gd_info());04PHP圖像基礎(chǔ)常見圖片格式1.JPEGJPEG是聯(lián)合圖像專家組(JointPhotographicExpertsGroup)的縮寫,是第一個國家圖像壓縮標(biāo)準(zhǔn)。它是目前網(wǎng)絡(luò)上最流行的圖像格式,文件擴展名為JPG或JPEG。2.GIFGIF是圖像文件交換格式(GraphicsInterchangeFormat)的縮寫,它是一種基于LZW算法的連續(xù)色調(diào)的無損壓縮格式,在減少了文件大小的同時,保證了圖片的可視質(zhì)量。廣泛用于網(wǎng)絡(luò),用來存儲包含文本、直線和單塊顏色的圖像。04PHP圖像基礎(chǔ)3.PNGPNG是可移植的網(wǎng)絡(luò)圖像(PortableNetworkGraphics)的縮寫,它提供了可變透明度、微細(xì)修正和二維空間交錯等特性。4.WBMPWBMP是無線位圖(WirelessBitmap))的縮寫,是一種移動計算機設(shè)備使用的標(biāo)準(zhǔn)圖像格式,專門為無線通信設(shè)備設(shè)計的文件格式。5.WebPWebP是由Google公司推出的一種同時兼容有損壓縮和無損壓縮的圖片文件格式。04PHP圖像基礎(chǔ)在PHP中GD庫處理圖像的操作都是先在內(nèi)存中處理,操作完成后再以數(shù)據(jù)流的方式輸出到瀏覽器或者保存在服務(wù)器磁盤中。創(chuàng)建一個圖像通常要經(jīng)過四個步驟:(1)創(chuàng)建畫布(2)繪制圖像(3)輸出圖像(4)釋放資源下面我們就來分別學(xué)習(xí)這些步驟。05圖像常見操作我們通常使用imagecreate()和imagecreatetruecolor()來創(chuàng)建指定的畫布,它們的語法如下圖所示。以上兩個函數(shù)都可以創(chuàng)建一張畫布,成功都會返回一個資源句柄,失敗則返回FALSE。不同的是它們可以容納的色彩范圍不同,imagecreate()創(chuàng)建一個基于普通調(diào)色板的圖像,通常支持256色。imagecreatetruecolor()可以創(chuàng)建一個真色彩圖像,但是該函數(shù)不可以用于GIF格式圖像。05圖像常見操作創(chuàng)建畫布05圖像常見操作創(chuàng)建畫布由于我們沒有在畫布上執(zhí)行任何操作,因此瀏覽器不會顯示出畫布。除了使用上面兩個函數(shù)可以創(chuàng)建一個畫布外。我們還可以通過表中的函數(shù)打開服務(wù)器或者網(wǎng)絡(luò)文件中已經(jīng)存在的圖像。表中的函數(shù)都只接受一個文件路徑或者URL,在執(zhí)行成功后返回文件句柄,失敗則返回FALSE。05圖像常見操作函數(shù)名描述imagecreatefromgif()通過GIF文件或者URL新建一個圖像imagecreatefromjpeg()通過JPEG文件或者URL新建一個圖像imagecreatefrompng()通過PNG文件或者URL新建一個圖像imagecreatefromwbmp()通過WBMP文件或者URL新建一個圖像創(chuàng)建畫布我們可以通過imagesx()和imagesy()來獲取創(chuàng)建圖像的尺寸(以像素為單位),它們的語法如圖所示。05圖像常見操作在PHP中可以使用不同的函數(shù)輸出不同格式的圖像,如表是常用的輸出圖像函數(shù)。05圖像常見操作輸出圖像函數(shù)名描述imagegif()輸出一個GIF格式圖像到瀏覽器或文件imagejpeg()輸出一個JPEG格式圖像到瀏覽器或文件imagepng()輸出一個PNG格式圖像到瀏覽器或文件表中函數(shù)的語法如圖所示。在所示的語法中,如果指定了第二個參數(shù)則圖像會以文件的形式輸出。05圖像常見操作輸出圖像為了保持兼容,我們需要在程序中使用header()來指瀏覽器以什么形式輸出類型,它的語法如圖所示。05圖像常見操作輸出圖像在圖像的所有資源使用完畢后,我們通常就需要釋放圖像處理所占用的內(nèi)存了。在PHP中通過imagedestroy()來釋放資源,它的語法如圖所示。05圖像常見操作釋放資源在PHP中通過imagecolorallocate()來設(shè)置顏色,它的語法如圖所示。imagecolorallocate()會返回一個標(biāo)識符,代表了由給定的RGB成分組成的顏色。圖中所示語法中$red、$green、$blue的取值可以是0到255的整數(shù)或者十六進制的0x00到0xFF。05圖像常見操作設(shè)置顏色通過坐標(biāo)系統(tǒng),我們就可以比較準(zhǔn)確地定位到一個點,然后通過相關(guān)函數(shù)來繪制圖形。下面我們來學(xué)習(xí)PHP中繪制各種圖形的函數(shù)。05圖像常見操作繪制圖像區(qū)域填充不可以用來繪制圖像。它可以將一個已存在圖像中大面積的顏色很方便地替換為別的顏色。在PHP中通過imagefill()來執(zhí)行區(qū)域填充,它的語法如圖所示。imagefill()會將與(x,y)點處顏色相同并且相鄰的顏色替換為$color設(shè)置的顏色。05圖像常見操作區(qū)域填充在PHP中,我們可以通過imagesetpixel()來

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論