relativo capitolo dei documenti è this one e penso che sia abbastanza chiaro: se per esempio si desidera decodificare i file di immagine nel nuovo .zap
-format, si scrive un modulo ZapImagePlugin.py
che deve eseguire un paio di cose:
- hanno uno
class ZapImageFile(ImageFile.ImageFile):
con attributi di stringa format
e format_description
e un metodo di aggancio def _open(self)
(di cui più avanti);
- a livello di modulo,
Image.register_open('zap', ZapImageFile)
e Image.register_extension('ZAP', '.zap')
le specifiche per il metodo _open
sono molto chiaramente definite nel capitolo - deve leggere i dati di immagini e metadati da aprire oggetto simile a file binario self.fp
, alzare SyntaxError
(o un'altra eccezione) ASAP se rileva che il file non è in realtà nel giusto formato, impostare almeno self.size
e self.mode
attributi, e al fine di consentire lettura l'immagine, anche self.tile
, un elenco di descrittori piastrelle di nuovo in la forma t specificato in quel capitolo (incluso il file-offset, che dici di sapere, e un decodificatore - se i raw o bit decoders, documentati nel capitolo, non soddisfano le tue esigenze, il capitolo raccomanda di studiare le fonti di alcuni dei molti decodificatori forniti, come JPEG, PNG, ecc.).
fonte
2010-02-13 16:18:14
Sembra un buon riutilizzo del codice. D: Il tuo approccio ha comportato la registrazione di un nuovo tipo di immagine e di un'estensione e, in caso affermativo, c'era qualcosa di complicato nel farlo? – martineau
@martineau: avevo bisogno di questo per operare su un flusso binario esistente, quindi non ho tentato di registrare nulla. Per essere precisi, stavo leggendo un PNG incorporato in un file di dati di gioco. –