W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
pathlib.Path
? 對(duì)象或類似文件的對(duì)象。Pillow使用文件名或 ?Path
?要打開一個(gè)文件,所以在本文的其余部分中,它們都將被視為一個(gè)類似文件的對(duì)象。以下都是等效的:
from PIL import Image
import io
import pathlib
with Image.open('test.jpg') as im:
...
with Image.open(pathlib.Path('test.jpg')) as im2:
...
with open('test.jpg', 'rb') as f:
im3 = Image.open(f)
...
with open('test.jpg', 'rb') as f:
im4 = Image.open(io.BytesIO(f.read()))
...
如果將文件名或類似路徑的對(duì)象傳遞給 Pillow,則在?Image.Image.load()
?調(diào)用該方法后,Pillow 打開的結(jié)果文件對(duì)象也可能被 Pillow 關(guān)閉 ,前提是關(guān)聯(lián)的圖像沒有多幀。
Pillow 通常不能關(guān)閉和重新打開文件,因此對(duì)該文件的任何訪問都需要在關(guān)閉之前進(jìn)行。
Image.open()
?文件名和 ?Path
?對(duì)象作為文件打開。從打開的文件中讀取元數(shù)據(jù)。文件保持打開狀態(tài)以供進(jìn)一步使用。Image.Image.load()
? 當(dāng)需要圖像中的像素?cái)?shù)據(jù)時(shí), load() 被調(diào)用。當(dāng)前幀被讀取到內(nèi)存中。該圖像現(xiàn)在可以獨(dú)立于底層圖像文件使用。Path
對(duì)象傳遞給Image.open()
,則文件對(duì)象由 Pillow 打開,并被認(rèn)為是由 Pillow 獨(dú)占使用的。所以如果圖片是單幀圖片,這個(gè)方法會(huì)在讀取完該幀后關(guān)閉文件。如果圖像是多幀圖像(例如多頁 TIFF 和動(dòng)畫 GIF),圖像文件將保持打開狀態(tài),以便 Image.Image.seek()
可以加載適當(dāng)?shù)膸?br>Image.Image.close()
?關(guān)閉文件并銷毀核心圖像對(duì)象。這用于 Pillow 上下文管理器支持。例如:with Image.open('test.jpg') as img: ... # image operations here.
單幀圖像的生命周期相對(duì)簡(jiǎn)單。文件必須保持打開狀態(tài),直到 ?load()
? 或 ?close()
? 調(diào)用函數(shù)或退出上下文管理器。
多幀圖像更復(fù)雜。這個(gè)? load()
? 方法不是終端方法,因此不應(yīng)關(guān)閉基礎(chǔ)文件。一般來說,在調(diào)用者明確關(guān)閉圖像之前, Pillow 不知道是否會(huì)有其他數(shù)據(jù)請(qǐng)求。
TiffImagePlugin
?有一些代碼可以將底層文件描述符傳遞到libtiff中(如果處理的是實(shí)際文件)。由于libtiff在內(nèi)部關(guān)閉文件描述符,因此在將其傳遞到libtiff之前,它是重復(fù)的。with open('test.jpg', 'rb') as f:
im5 = Image.open(f)
im5.load() # FAILS, closed file
with Image.open('test.jpg') as im6:
pass im6.load() # FAILS, closed file
Image.Image.load()
? 應(yīng)該關(guān)閉圖像文件,除非有多個(gè)幀。Image.Image.seek()
?不應(yīng)關(guān)閉圖像文件。 Image.Image.close()
?在使用文件名或 ?Path
?對(duì)象以確保關(guān)閉基礎(chǔ)文件。Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: