W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
文件解碼器的生命周期有三個階段:
[decodername]_decoder
?在內(nèi)部核心圖像對象上。該函數(shù)是用來自?tile
?設置的?args
?元組在?_open
?方法中調(diào)用的。當前的慣例是在 ?decode.c
?定義解碼器設置函數(shù)的名稱 ?PyImaging_[Decodername]DecoderNew
? 。它的 python 綁定被命名[decodername]_decoder
并從_imaging.c
函數(shù)數(shù)組的編解碼器部分的文件中設置。
setup 函數(shù)需要調(diào)用PyImaging_DecoderNew
并至少設置decode
函數(shù)指針。此對象中感興趣的字段是:
decode
?指向解碼函數(shù)的函數(shù)指針,該函數(shù)可以訪問 im
, state
以及要添加到圖像中的數(shù)據(jù)緩沖區(qū)。
cleanup
?指向清除函數(shù)的函數(shù)指針,可以訪問 state
.
im
?目標圖像,將由Pillow設置。
state
?一個?ImagingCodeStateInstance
?,將由Pillow設置。這個 context
成員是一個不透明結構,解碼器可以使用它來存儲任何特定于格式的狀態(tài)或選項。
pulls_fd
?實驗-警告, 接口可能會改變。如果設置為1, state->fd
將是指向類似于python文件的對象的指針。解碼器可以使用 codec_fd.c
直接從類似對象的文件中讀取,而不是將數(shù)據(jù)推送到緩沖區(qū)中。請注意,在刪除此警告之前,可能會重構此實現(xiàn)。
3.3.0 新版功能.
使用目標(核心)圖像、解碼器狀態(tài)結構和要解碼的數(shù)據(jù)緩沖區(qū)調(diào)用解碼函數(shù)。
??實驗??- 如果?pulls_fd
?設置,則解碼函數(shù)被調(diào)用一次,緩沖區(qū)為空。在一次調(diào)用中解碼整個圖塊是解碼器的責任。本節(jié)的其余部分僅在?pulls_fd
?未設置時適用。
解碼器有責任從緩沖區(qū)中提取盡可能多的數(shù)據(jù)并返回消耗的字節(jié)數(shù)。對解碼器的下一次調(diào)用將包括之前未使用的尾部。當從文件中讀取數(shù)據(jù)時,解碼器函數(shù)將被多次調(diào)用。
如果發(fā)生錯誤,設置?state->errcode
?并返回-1。
成功返回 -1,不設置錯誤代碼。
如果解碼器返回負值或文件中存在讀取錯誤,則調(diào)用?cleanup
?函數(shù)。這個函數(shù)應該釋放所有分配的內(nèi)存,并從外部庫釋放任何資源。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: