版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
Python電子教案7-1文件和數(shù)據(jù)格式化Python電子教案7-1文件和數(shù)據(jù)格式化1文件的使用文件的使用2文件是一個存儲在輔助存儲器上的數(shù)據(jù)序列,可以包含任何數(shù)據(jù)內(nèi)容。概念上,文件是數(shù)據(jù)的集合和抽象,類似地,函數(shù)是程序的集合和抽象。用文件形式組織和表達數(shù)據(jù)更有效也更為靈活。文件包括兩種類型:文本文件和二進制文件。文本文件一般由單一特定編碼的字符組成,如UTF-8編碼,內(nèi)容容易統(tǒng)一展示和閱讀。大部分文本文件都可以通過文本編輯軟件或文字處理軟件創(chuàng)建、修改和閱讀。由于文本文件存在編碼,所以,它也可以被看作是存儲在磁盤上的長字符串,例如一個txt格式的文本文件。文件概述文件是一個存儲在輔助存儲器上的數(shù)據(jù)序列,可以包含任何數(shù)據(jù)內(nèi)容二進制文件直接由比特0和比特1組成,沒有統(tǒng)一字符編碼,文件內(nèi)部數(shù)據(jù)的組織格式與文件用途有關。二進制是信息按照非字符但特定格式形成的文件,例如,png格式的圖片文件、avi格式的視頻文件。二進制文件和文本文件最主要的區(qū)別在于是否有統(tǒng)一的字符編碼。二進制文件由于沒有統(tǒng)一字符編碼,只能當作字節(jié)流,而不能看作是字符串。無論文件創(chuàng)建為文本文件或者二進制文件,都可以用“文本文件方式”和“二進制文件方式”打開,但打開后的操作不同。文件概述二進制文件直接由比特0和比特1組成,沒有統(tǒng)一字符編碼,文件內(nèi)微實例7.1:理解文本文件和二進制文件的區(qū)別。首先,用文本編輯器生成一個包含“中國是個偉大國家!”的txt格式文本文件,命名為7.1.txt。分別用文本文件方式和二進制文件方式讀入,并打印輸出效果,代碼如下:文件概述
微實例7.1:理解文本文件和二進制文件的區(qū)別。文件概述輸出結果為:可以看到,采用文本方式讀入文件,文件經(jīng)過編碼形成字符串,打印出有含義的字符;采用二進制方式打開文件,文件被解析為字節(jié)(byte)流。由于存在編碼,字符串中的一個字符由2個字節(jié)表示。文件概述輸出結果為:文件概述Python對文本文件和二進制文件采用統(tǒng)一的操作步驟,即“打開-操作-關閉”,如圖7.1所示。文件的打開關閉Python對文本文件和二進制文件采用統(tǒng)一的操作步驟,即“打操作系統(tǒng)中的文件默認處于存儲狀態(tài),首先需要將其打開,使得當前程序有權操作這個文件,打開不存在的文件可以創(chuàng)建文件。打開后的文件處于占用狀態(tài),此時,另一個進程不能操作這個文件??梢酝ㄟ^一組方法讀取文件的內(nèi)容或向文件寫入內(nèi)容,此時,文件作為一個數(shù)據(jù)對象存在,采用<a>.<b>()方式進行操作。操作之后需要將文件關閉,關閉將釋放對文件的控制使文件恢復存儲狀態(tài),此時,另一個進程將能夠操作這個文件。文件的打開關閉操作系統(tǒng)中的文件默認處于存儲狀態(tài),首先需要將其打開,使得當前Python通過解釋器內(nèi)置的open()函數(shù)打開一個文件,并實現(xiàn)該文件與一個程序變量的關聯(lián),open()函數(shù)格式如下:<變量名>=open(<文件名>,<打開模式>)
open()函數(shù)有兩個參數(shù):文件名和打開模式。文件名可以是文件的實際名字,也可以是包含完整路徑的名字
文件的打開關閉Python通過解釋器內(nèi)置的open()函數(shù)打開一個文件,并
打開模式用于控制使用何種方式打開文件,open()函數(shù)提供7種基本的打開模式,如表7.1所示
文件的打開關閉打開模式用于控制使用何種方式打開文件,open()函數(shù)提供打開模式使用字符串方式表示,根據(jù)字符串定義,單引號或者雙引號均可。上述打開模式中,‘r’、‘w’、‘x’、‘b’可以和‘b’、‘t’、‘+’組合使用,形成既表達讀寫又表達文件模式的方式。例如,open()函數(shù)默認采用'rt'(文本只讀)模式,讀入程序所在目錄中7.1.txt文件:textfile=open('7.1.txt','r')或textfile=open('7.1.txt')讀取一個二進制文件,如一個圖片、一段視頻或者一段音樂文件,需要使用文件打開模式'rb'。例如,打開一個名為'music.mp3'的音頻文件:binfile=open('music.mp3','rb')文件使用結束后要用close()方法關閉,釋放文件的使用授權,該方法的使用方式如下:<變量名>.close()文件的打開關閉打開模式使用字符串方式表示,根據(jù)字符串定義,單引號或者雙引號
當文件被打開后,根據(jù)打開方式不同可以對文件進行相應的讀寫操作。注意,當文件以文本文件方式打開時,讀寫按照字符串方式,采用當前計算機上使用的編碼或指定編碼;當文件以二進制文件方式打開時,讀寫按照字節(jié)流方式。
Python提供4個常用的文件內(nèi)容讀取方法
文件的讀寫當文件被打開后,根據(jù)打開方式不同可以對文件進行相應的讀寫操微實例7.2:文本文件逐行打印。用戶輸入文件路徑,以文本文件方式讀入文件內(nèi)容并逐行打印,代碼如下:程序首先提示用戶輸入一個文件名,然后打開文件并賦值給文件對象變量fo。文件的全部內(nèi)容通過fo.readlines()方法讀入到一個列表中,列表的每個元素是文件一行的內(nèi)容,然后通過for…in方式遍歷列表,處理每行內(nèi)容。文件的讀寫微實例7.2:文本文件逐行打印。文件的讀寫
上述代碼盡管完成了微實例7.2的要求,但存在一些缺點:當讀入文件非常大時,一次性將內(nèi)容讀取到列表中會占用很多內(nèi)存,影響程序執(zhí)行速度。一個合理的方法是逐行讀入內(nèi)容到內(nèi)存,并逐行處理。這可以通過一個簡單的方法解決。Python將文件本身作為一個行序列,遍歷文件的所有行可以直接這樣完成文件的讀寫上述代碼盡管完成了微實例7.2的要求,但存在一些缺點:當讀如果程序需要逐行處理文件內(nèi)容,建議采用上述代碼中2-5行組成的格式,如下:fo=open(fname,"r")forlineinfo:#處理一行數(shù)據(jù)fo.close()文件的讀寫如果程序需要逐行處理文件內(nèi)容,建議采用上述代碼中2-5行組成Python提供3個與文件內(nèi)容寫入有關的方法,如表7.3所示。微實例7.3:向文件寫入一個列表。向文件寫一個列表類型,并打印輸出結果,代碼如下:文件的讀寫Python提供3個與文件內(nèi)容寫入有關的方法,如表7.3所示文件的讀寫>>>請輸入要寫入的文件:test.txt>>>
文件的讀寫可以看到,程序并沒有輸出寫入的列表內(nèi)容。在WriteFileAList1.py程序同目錄找到test.txt文件,打開可以看到其中的內(nèi)容是:列表ls內(nèi)容被寫入文件,但為何5-7行代碼沒有將這些內(nèi)容打印出來呢?這是因為文件寫入內(nèi)容后,當前文件操作指針在寫入內(nèi)容的后面,5-7行代碼從這個指針開始向后讀入并打印內(nèi)容,被寫入的內(nèi)容卻在指針前面,因此未能被打印出來。為此,可以在寫入文件后增加一條代碼fo.seek(0)將文件操作指針返回到文件開始,即可顯示寫入的內(nèi)容,代碼如下。文件的讀寫可以看到,程序并沒有輸出寫入的列表內(nèi)容。在WriteFile程序執(zhí)行結果如下:文件的讀寫文件的讀寫PIL庫的使用PIL庫的使用20PIL(PythonImageLibrary)庫是Python語言的第三方庫,需要通過pip工具安裝,Python安裝第三方庫的詳細方法請見8.6節(jié)。安裝PIL庫的方法如下,需要注意,安裝庫的名字是pillow。PIL庫支持圖像存儲、顯示和處理,它能夠處理幾乎所有圖片格式,可以完成對圖像的縮放、剪裁、疊加以及向圖像添加線條、圖像和文字等操作。PIL庫概述PIL(PythonImageLibrary)庫是PytPIL庫主要可以完成圖像歸檔和圖像處理兩方面功能需求:圖像歸檔:對圖像進行批處理、生成圖像預覽、圖像格式轉換等;圖像處理:圖像基本處理、像素處理、顏色處理等。根據(jù)功能不同,PIL庫共包括21個與圖片相關的類,這些類可以被看作是子庫或PIL庫中的模塊,子庫列表如下。Image、ImageChops、ImageColor、ImageCrackCode、ImageDraw、ImageEnhance、ImageFile、ImageFileIO、ImageFilter、ImageFont、ImageGL、ImageGrab、Imagemath、ImageOps、ImagePalette、ImagePath、ImageQt、ImageSequence、ImageStat、ImageTk、ImageWinPIL庫概述PIL庫主要可以完成圖像歸檔和圖像處理兩方面功能需求:PIL在PIL中,任何一個圖像文件都可以用Image對象表示。表7.4給出了Image類的圖像讀取和創(chuàng)建方法。PIL庫Image類解析在PIL中,任何一個圖像文件都可以用Image對象表示。表7通過Image打開圖像文件時,圖像的柵格數(shù)據(jù)不會被直接解碼或者加載,程序只是讀取了圖像文件頭部的元數(shù)據(jù)信息,這部分信息標識了圖像的格式、顏色、大小等。因此,打開一個文件會十分迅速,與圖像的存儲和壓縮方式無關。要加載一個圖像文件,最簡單的形式如下,之后所有操作對im起作用
PIL庫Image類解析通過Image打開圖像文件時,圖像的柵格數(shù)據(jù)不會被直接解碼或其中,birdnest.jpg是一張鳥巢的夜景圖像,存儲在D:\pycodes目錄中,如圖7.2所示。在使用IDLE交互方式處理圖片文件時,建議采用文件的全路徑;如果使用Python文件形式,建議采用相對路徑,將文件和程序放到一個目錄中,例如:PIL庫Image類解析其中,birdnest.jpg是一張鳥巢的夜景圖像,存儲在DImage類有4個處理圖片的常用屬性,如表7.5所示。
查看已經(jīng)讀取圖像文件的屬性如下
PIL庫Image類解析Image類有4個處理圖片的常用屬性,如表7.5所示。PILImage還能讀取序列類圖像文件,包括GIF,FLI,FLC,TIFF等格式文件。open()方法打開一個圖像時自動加載序列中的第一幀,使用seek()和tell()方法可以在不同幀之間移動,如表7.6所示。PIL庫Image類解析Image還能讀取序列類圖像文件,包括GIF,FLI,FLC微實例7.1:GIF文件圖像提取。對一個GIF格式動態(tài)文件,提取其中各幀圖像,并保存為文件。PIL庫Image類解析微實例7.1:GIF文件圖像提取。PIL庫Image類解析
微實例7.1展示了一種采用try…except編寫程序的方法,通過seek()方法和save()方法配合提取GIF圖像格式的每一幀,并保存為文件。Image類的圖像轉換和保存方法如表7.7所示。PIL庫Image類解析PIL庫Image類解析
其中,save()方法有兩個參數(shù):文件名filename和圖像格式format。如果調(diào)用時不指定保存格式,
如微實例7.1,PIL將自動根據(jù)文件名filename后綴存儲圖像;如果指定格式,則按照格式存儲。
搭配采用open()和save()方法可以實現(xiàn)圖像的格式轉換,例如,將png格式轉換為jpg格式,代碼如下。需要注意,Image類的save()方法主要用于保存文件到硬盤,PIL庫還提供了功能更強的格式轉換方法
PIL庫Image類解析其中,save()方法有兩個參數(shù):文件名filename和生成"birdnest.jpg"圖像的縮略圖,代碼如下(續(xù)上一個IDLE指令),鳥巢圖片及其縮略圖如圖7.2所示。其中(128,128)是縮略圖的尺寸。PIL庫Image類解析北京鳥巢圖片及其縮略圖生成"birdnest.jpg"圖像的縮略圖,代碼如下(續(xù)上Image類可以縮放和旋轉圖像,方法如表7.8所示,其中,rotate()方法以逆時針旋轉的角度值作為參數(shù)來旋轉圖像。PIL庫Image類解析Image類可以縮放和旋轉圖像,方法如表7.8所示,其中,rImage類能夠對每個像素點或者一幅RGB圖像的每個通道單獨進行操作,如表7.9所示。split()方法能夠將RGB圖像各顏色通道提取出來,merge()方法能夠將各獨立通道再合成一幅新的圖像。
PIL庫Image類解析Image類能夠對每個像素點或者一幅RGB圖像的每個通道單獨微實例7.2:圖像的顏色交換。
交換圖像中的顏色??梢酝ㄟ^分離RGB圖片的三個顏色通道實現(xiàn)顏色交換。代碼如下,程序執(zhí)行效果如圖7.3所示,夜色下的北京鳥巢變成了藍色!PIL庫Image類解析微實例7.2:圖像的顏色交換。PIL庫Image類解析PIL庫Image類解析被改變顏色的北京鳥巢圖片
PIL庫Image類解析被改變顏色的北京鳥巢圖片
操作圖像的每個像素點需要通過函數(shù)實現(xiàn),采用lambda函數(shù)和point()方法搭配使用,例子如下,顯示效果如圖7.4所示
PIL庫Image類解析操作圖像的每個像素點需要通過函數(shù)實現(xiàn),采用lambda函數(shù)PIL庫Image類解析去掉光線的北京鳥巢圖片
PIL庫Image類解析去掉光線的北京鳥巢圖片PIL庫的ImageFilter類和ImageEnhance類提供了過濾和增強的方法。ImageFilter類共提供10種預定義圖像過濾方法,如表7.10所示。圖像的過濾和增強PIL庫的ImageFilter類和ImageEnhance利用Image類的filter()方法可以使用ImageFilter類,使用方式如下:
Image.filter(ImageFilter.fuction)微實例7.3:圖像的輪廓獲取。獲取圖像的輪廓,代碼如下,程序執(zhí)行效果如圖7.5所示,北京鳥巢變得更加抽象、更具想象空間!圖像的過濾和增強利用Image類的filter()方法可以使用ImageFi圖像的過濾和增強北京鳥巢圖片的輪廓效果
圖像的過濾和增強北京鳥巢圖片的輪廓效果ImageEnhance類提供了更高級的圖像增強需求,它提供調(diào)整色彩度、亮度、對比度、銳化等功能,如表7.11所示。圖像的過濾和增強ImageEnhance類提供了更高級的圖像增強需求,它提供微實例7.4:圖像的對比度增強。增強圖像的對比度為初始的20倍。代碼如下,程序執(zhí)行效果如圖7.6所示。圖像的過濾和增強微實例7.4:圖像的對比度增強。圖像的過濾和增強圖像的過濾和增強北京鳥巢圖片的20倍對比度增強效果
圖像的過濾和增強北京鳥巢圖片的20倍對比度增強效果Python電子教案7-1文件和數(shù)據(jù)格式化Python電子教案7-1文件和數(shù)據(jù)格式化44文件的使用文件的使用45文件是一個存儲在輔助存儲器上的數(shù)據(jù)序列,可以包含任何數(shù)據(jù)內(nèi)容。概念上,文件是數(shù)據(jù)的集合和抽象,類似地,函數(shù)是程序的集合和抽象。用文件形式組織和表達數(shù)據(jù)更有效也更為靈活。文件包括兩種類型:文本文件和二進制文件。文本文件一般由單一特定編碼的字符組成,如UTF-8編碼,內(nèi)容容易統(tǒng)一展示和閱讀。大部分文本文件都可以通過文本編輯軟件或文字處理軟件創(chuàng)建、修改和閱讀。由于文本文件存在編碼,所以,它也可以被看作是存儲在磁盤上的長字符串,例如一個txt格式的文本文件。文件概述文件是一個存儲在輔助存儲器上的數(shù)據(jù)序列,可以包含任何數(shù)據(jù)內(nèi)容二進制文件直接由比特0和比特1組成,沒有統(tǒng)一字符編碼,文件內(nèi)部數(shù)據(jù)的組織格式與文件用途有關。二進制是信息按照非字符但特定格式形成的文件,例如,png格式的圖片文件、avi格式的視頻文件。二進制文件和文本文件最主要的區(qū)別在于是否有統(tǒng)一的字符編碼。二進制文件由于沒有統(tǒng)一字符編碼,只能當作字節(jié)流,而不能看作是字符串。無論文件創(chuàng)建為文本文件或者二進制文件,都可以用“文本文件方式”和“二進制文件方式”打開,但打開后的操作不同。文件概述二進制文件直接由比特0和比特1組成,沒有統(tǒng)一字符編碼,文件內(nèi)微實例7.1:理解文本文件和二進制文件的區(qū)別。首先,用文本編輯器生成一個包含“中國是個偉大國家!”的txt格式文本文件,命名為7.1.txt。分別用文本文件方式和二進制文件方式讀入,并打印輸出效果,代碼如下:文件概述
微實例7.1:理解文本文件和二進制文件的區(qū)別。文件概述輸出結果為:可以看到,采用文本方式讀入文件,文件經(jīng)過編碼形成字符串,打印出有含義的字符;采用二進制方式打開文件,文件被解析為字節(jié)(byte)流。由于存在編碼,字符串中的一個字符由2個字節(jié)表示。文件概述輸出結果為:文件概述Python對文本文件和二進制文件采用統(tǒng)一的操作步驟,即“打開-操作-關閉”,如圖7.1所示。文件的打開關閉Python對文本文件和二進制文件采用統(tǒng)一的操作步驟,即“打操作系統(tǒng)中的文件默認處于存儲狀態(tài),首先需要將其打開,使得當前程序有權操作這個文件,打開不存在的文件可以創(chuàng)建文件。打開后的文件處于占用狀態(tài),此時,另一個進程不能操作這個文件??梢酝ㄟ^一組方法讀取文件的內(nèi)容或向文件寫入內(nèi)容,此時,文件作為一個數(shù)據(jù)對象存在,采用<a>.<b>()方式進行操作。操作之后需要將文件關閉,關閉將釋放對文件的控制使文件恢復存儲狀態(tài),此時,另一個進程將能夠操作這個文件。文件的打開關閉操作系統(tǒng)中的文件默認處于存儲狀態(tài),首先需要將其打開,使得當前Python通過解釋器內(nèi)置的open()函數(shù)打開一個文件,并實現(xiàn)該文件與一個程序變量的關聯(lián),open()函數(shù)格式如下:<變量名>=open(<文件名>,<打開模式>)
open()函數(shù)有兩個參數(shù):文件名和打開模式。文件名可以是文件的實際名字,也可以是包含完整路徑的名字
文件的打開關閉Python通過解釋器內(nèi)置的open()函數(shù)打開一個文件,并
打開模式用于控制使用何種方式打開文件,open()函數(shù)提供7種基本的打開模式,如表7.1所示
文件的打開關閉打開模式用于控制使用何種方式打開文件,open()函數(shù)提供打開模式使用字符串方式表示,根據(jù)字符串定義,單引號或者雙引號均可。上述打開模式中,‘r’、‘w’、‘x’、‘b’可以和‘b’、‘t’、‘+’組合使用,形成既表達讀寫又表達文件模式的方式。例如,open()函數(shù)默認采用'rt'(文本只讀)模式,讀入程序所在目錄中7.1.txt文件:textfile=open('7.1.txt','r')或textfile=open('7.1.txt')讀取一個二進制文件,如一個圖片、一段視頻或者一段音樂文件,需要使用文件打開模式'rb'。例如,打開一個名為'music.mp3'的音頻文件:binfile=open('music.mp3','rb')文件使用結束后要用close()方法關閉,釋放文件的使用授權,該方法的使用方式如下:<變量名>.close()文件的打開關閉打開模式使用字符串方式表示,根據(jù)字符串定義,單引號或者雙引號
當文件被打開后,根據(jù)打開方式不同可以對文件進行相應的讀寫操作。注意,當文件以文本文件方式打開時,讀寫按照字符串方式,采用當前計算機上使用的編碼或指定編碼;當文件以二進制文件方式打開時,讀寫按照字節(jié)流方式。
Python提供4個常用的文件內(nèi)容讀取方法
文件的讀寫當文件被打開后,根據(jù)打開方式不同可以對文件進行相應的讀寫操微實例7.2:文本文件逐行打印。用戶輸入文件路徑,以文本文件方式讀入文件內(nèi)容并逐行打印,代碼如下:程序首先提示用戶輸入一個文件名,然后打開文件并賦值給文件對象變量fo。文件的全部內(nèi)容通過fo.readlines()方法讀入到一個列表中,列表的每個元素是文件一行的內(nèi)容,然后通過for…in方式遍歷列表,處理每行內(nèi)容。文件的讀寫微實例7.2:文本文件逐行打印。文件的讀寫
上述代碼盡管完成了微實例7.2的要求,但存在一些缺點:當讀入文件非常大時,一次性將內(nèi)容讀取到列表中會占用很多內(nèi)存,影響程序執(zhí)行速度。一個合理的方法是逐行讀入內(nèi)容到內(nèi)存,并逐行處理。這可以通過一個簡單的方法解決。Python將文件本身作為一個行序列,遍歷文件的所有行可以直接這樣完成文件的讀寫上述代碼盡管完成了微實例7.2的要求,但存在一些缺點:當讀如果程序需要逐行處理文件內(nèi)容,建議采用上述代碼中2-5行組成的格式,如下:fo=open(fname,"r")forlineinfo:#處理一行數(shù)據(jù)fo.close()文件的讀寫如果程序需要逐行處理文件內(nèi)容,建議采用上述代碼中2-5行組成Python提供3個與文件內(nèi)容寫入有關的方法,如表7.3所示。微實例7.3:向文件寫入一個列表。向文件寫一個列表類型,并打印輸出結果,代碼如下:文件的讀寫Python提供3個與文件內(nèi)容寫入有關的方法,如表7.3所示文件的讀寫>>>請輸入要寫入的文件:test.txt>>>
文件的讀寫可以看到,程序并沒有輸出寫入的列表內(nèi)容。在WriteFileAList1.py程序同目錄找到test.txt文件,打開可以看到其中的內(nèi)容是:列表ls內(nèi)容被寫入文件,但為何5-7行代碼沒有將這些內(nèi)容打印出來呢?這是因為文件寫入內(nèi)容后,當前文件操作指針在寫入內(nèi)容的后面,5-7行代碼從這個指針開始向后讀入并打印內(nèi)容,被寫入的內(nèi)容卻在指針前面,因此未能被打印出來。為此,可以在寫入文件后增加一條代碼fo.seek(0)將文件操作指針返回到文件開始,即可顯示寫入的內(nèi)容,代碼如下。文件的讀寫可以看到,程序并沒有輸出寫入的列表內(nèi)容。在WriteFile程序執(zhí)行結果如下:文件的讀寫文件的讀寫PIL庫的使用PIL庫的使用63PIL(PythonImageLibrary)庫是Python語言的第三方庫,需要通過pip工具安裝,Python安裝第三方庫的詳細方法請見8.6節(jié)。安裝PIL庫的方法如下,需要注意,安裝庫的名字是pillow。PIL庫支持圖像存儲、顯示和處理,它能夠處理幾乎所有圖片格式,可以完成對圖像的縮放、剪裁、疊加以及向圖像添加線條、圖像和文字等操作。PIL庫概述PIL(PythonImageLibrary)庫是PytPIL庫主要可以完成圖像歸檔和圖像處理兩方面功能需求:圖像歸檔:對圖像進行批處理、生成圖像預覽、圖像格式轉換等;圖像處理:圖像基本處理、像素處理、顏色處理等。根據(jù)功能不同,PIL庫共包括21個與圖片相關的類,這些類可以被看作是子庫或PIL庫中的模塊,子庫列表如下。Image、ImageChops、ImageColor、ImageCrackCode、ImageDraw、ImageEnhance、ImageFile、ImageFileIO、ImageFilter、ImageFont、ImageGL、ImageGrab、Imagemath、ImageOps、ImagePalette、ImagePath、ImageQt、ImageSequence、ImageStat、ImageTk、ImageWinPIL庫概述PIL庫主要可以完成圖像歸檔和圖像處理兩方面功能需求:PIL在PIL中,任何一個圖像文件都可以用Image對象表示。表7.4給出了Image類的圖像讀取和創(chuàng)建方法。PIL庫Image類解析在PIL中,任何一個圖像文件都可以用Image對象表示。表7通過Image打開圖像文件時,圖像的柵格數(shù)據(jù)不會被直接解碼或者加載,程序只是讀取了圖像文件頭部的元數(shù)據(jù)信息,這部分信息標識了圖像的格式、顏色、大小等。因此,打開一個文件會十分迅速,與圖像的存儲和壓縮方式無關。要加載一個圖像文件,最簡單的形式如下,之后所有操作對im起作用
PIL庫Image類解析通過Image打開圖像文件時,圖像的柵格數(shù)據(jù)不會被直接解碼或其中,birdnest.jpg是一張鳥巢的夜景圖像,存儲在D:\pycodes目錄中,如圖7.2所示。在使用IDLE交互方式處理圖片文件時,建議采用文件的全路徑;如果使用Python文件形式,建議采用相對路徑,將文件和程序放到一個目錄中,例如:PIL庫Image類解析其中,birdnest.jpg是一張鳥巢的夜景圖像,存儲在DImage類有4個處理圖片的常用屬性,如表7.5所示。
查看已經(jīng)讀取圖像文件的屬性如下
PIL庫Image類解析Image類有4個處理圖片的常用屬性,如表7.5所示。PILImage還能讀取序列類圖像文件,包括GIF,FLI,FLC,TIFF等格式文件。open()方法打開一個圖像時自動加載序列中的第一幀,使用seek()和tell()方法可以在不同幀之間移動,如表7.6所示。PIL庫Image類解析Image還能讀取序列類圖像文件,包括GIF,FLI,FLC微實例7.1:GIF文件圖像提取。對一個GIF格式動態(tài)文件,提取其中各幀圖像,并保存為文件。PIL庫Image類解析微實例7.1:GIF文件圖像提取。PIL庫Image類解析
微實例7.1展示了一種采用try…except編寫程序的方法,通過seek()方法和save()方法配合提取GIF圖像格式的每一幀,并保存為文件。Image類的圖像轉換和保存方法如表7.7所示。PIL庫Image類解析PIL庫Image類解析
其中,save()方法有兩個參數(shù):文件名filename和圖像格式format。如果調(diào)用時不指定保存格式,
如微實例7.1,PIL將自動根據(jù)文件名filename后綴存儲圖像;如果指定格式,則按照格式存儲。
搭配采用open()和save()方法可以實現(xiàn)圖像的格式轉換,例如,將png格式轉換為jpg格式,代碼如下。需要注意,Image類的save()方法主要用于保存文件到硬盤,PIL庫還提供了功能更強的格式轉換方法
PIL庫Image類解析其中,save()方法有兩個參數(shù):文件名filename和生成"birdnest.jpg"圖像的縮略圖,代碼如下(續(xù)上一個IDLE指令),鳥巢圖片及其縮略圖如圖7.2所示。其中(128,128)是縮略圖的尺寸。PIL庫Image類解析北京鳥巢圖片
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024跨境教育服務與合作合同
- 2025年消防現(xiàn)場施工安全文明施工合同范本
- 2025年度高風險投資借貸合同風險預警版3篇
- 2024版建筑工程勘察合同書
- 二零二五年度酒水行業(yè)專業(yè)論壇與合作交流合同3篇
- 個人與企業(yè)間產(chǎn)品代理合同(2024版)
- 2025年豆粕代銷委托管理標準合同3篇
- 2024版政府定點采購合同書
- 2024施工項目BIM技術應用中介服務協(xié)議2篇
- 2025年智能小區(qū)綠化節(jié)能技術應用承包合同2篇
- 建筑史智慧樹知到期末考試答案2024年
- 金蓉顆粒-臨床用藥解讀
- 社區(qū)健康服務與管理教案
- 2023-2024年家政服務員職業(yè)技能培訓考試題庫(含答案)
- 2023年(中級)電工職業(yè)技能鑒定考試題庫(必刷500題)
- 藏歷新年文化活動的工作方案
- 果酒釀造完整
- 第4章-理想氣體的熱力過程
- 生涯發(fā)展展示
- 手術室應對突發(fā)事件、批量傷員應急預案及處理流程
- 動機-行為背后的原因課件
評論
0/150
提交評論